Вопрос по zend-framework2 – Zend Framework 2 MVC - отображение маршрутов модулей не работает

2

Я стараюсь следоватьУчебник Akrabats Приложение / Индекс работает, часть альбома нет.

Я попробовал это также сZendSkeletonModule без удачи

Ошибка в обоих случаях:

album/album (resolves to invalid controller class or alias: album/album)

Я попробовал это с мастером ZF2 и тегом бета4 (но тег бета4 выдает ошибку php по поводу отсутствующего метода getEventManager)

Я взял код из учебника Akrabats, и после этого использовал код изGitHub Repo, К сожалению, нет ни одного раздела форума или комментариев, чтобы попросить о помощи.

Я обнаружил некоторые различия в руководстве и Skeleton (zfcUser имеет такую же разницу) в файле module.config.php (который, я считаю, является ядром проблемы).

Учебник используетclasses в индексе контроллера, zfcUser и Skeleton, используяinvokables но это не имеет значения, так как ошибка не меняется.

мой module.config в настоящее время выглядит так:

<?php

return array(

    // Controllers in this module
    'controller' => array(
        'invokables' => array(
            'album/album' => 'Album\Controller\AlbumController',
        ),        
    ),


    // Routes for this module
    'router' => array(
        'routes' => array(
            'album' => array(
                'type' => 'Literal',
                'priority' => 1000,
                'options' => array(
                    'route' => '/album',
                    'defaults' => array(
                        'controller' => 'album/album',
                        'action' => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array( 
                    'misc' => array (
                        'type'    => 'segment',
                        'options' => array(
                            'route'    => '/album/[:action][/:id]',
                            'constraints' => array(
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'id'     => '[0-9]+',
                            ),
                            'defaults' => array(
                                'controller' => 'album/album',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),    

    // View setup for this module
    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);

Альбом \ Controller \ AlbumController:

<?php

namespace Album\Controller;

use Zend\Mvc\Controller\ActionController,
    Zend\View\Model\ViewModel,
    Album\Model\AlbumTable,
    Album\Model\Album,
    Album\Form\AlbumForm;

class AlbumController extends ActionController
{
// [....]
}

Я не знаю, где искать, чтобы исправить эту ошибку, у кого-нибудь из вас есть идея?

Код похож на оригинальный на github (см. Ссылки выше), если не указано иное.

ТИА

Ваш Ответ

4   ответа
3

что класс ActionController, похоже, отсутствует на ZF2-beta4, поэтому ваш AlbumController должно быть так:

use Zend\Mvc\Controller\AbstractActionController,
    Zend\View\Model\ViewModel;

class AlbumController extends AbstractActionController {
   .....
}
привет и добро пожаловать на ТАК. Вы правы (достаточно интересно, это не приводит к ошибке с ActionController), но проблема маршрутизации не решается им. Rufinus
Как говорит Арманд, вам нужно изменить module.config.php на invokables
Та же проблема, изменено на AbstractActionController и все еще есть проблемы с маршрутизацией.
4

зменен на invokables: На module.config.php

    'controller' => array(
            'classes' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),

должен быть изменен на

    'controllers' => array(
            'invokables' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),
как вы можете видеть в моем коде, это изменение уже сделано. Rufinus
Здравствуйте, Руфинус, я не заметил этого в вашем коде. Изменения решили проблему для меня в любом случае.
+ Арманд, я пропустил твое изменение на «контроллер» как упомянуто + сирхохли. Я дал ему правильный ответ флаг, потому что он новый член. все равно спасибо за вашу помощь. Rufinus
7

но и в том, что ключ массива теперь является «контроллером».s& Quot; во множественном числе, который сделал трюк для меня. В вашем коде & quot; invokables & quot; уже изменен, но вы, похоже, используете "контроллер" в качестве ключа.

    'controllers' => array(
            'invokables' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),
добро пожаловать на SO, спасибо за это Rufinus
0

Вы должны права config / application.config.php

<?php
return array(
    'modules' => array(
        'Application',
        'Album',
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);

Похожие вопросы