От чего зависит структура папок вида в ZF2?

1

Что определяет структуру папок представления в ZF2? Я выполнил начальный учебник ZF2 с помощью приложения "Альбом" и заметил, что расположение мнений для модуля альбома находится в /module/Album/view/album/album/*.phtml.

Что диктует /album/album/ часть?
Почему эти каталоги все строчные?
Почему одно и то же имя вложен?
В каких ситуациях они не будут одинаковыми?

Я предполагаю, что ответ лежит в файле module.config.php. Но я пробовал играть с комбинациями с 3 экземплярами album, пытаясь изменить каждый album1 отдельности, чтобы увидеть эффект, который у него был. Вот мой module.config.php с результатами каждого изменения, прокомментированным рядом с ним.

return array(
    'controllers' => array(
        'invokables' => array(
            'Album\Controller\Album' => 'Album\Controller\AlbumController',
        ),
    ),

    // The following section is new and should be added to your file
    'router' => array(
        'routes' => array(
            'album' => array( //When switching to 'album1' I get "Route with name "album" not found"
                              //If this is anything but 'album' I get this error, regardless of the other 2 values.
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/album[/:action][/:id]',    //When switching to 'album1' I get "The requested URL could not be matched by routing."
                                                                //If I change my url to /album1 though, it works so long as the first is still 'album'
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Album\Controller\Album',
                        'action'     => 'index',
                    ),
                ),
            ),
        ),
    ),

    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',    //Changing this seems to have no effect.
                                                //I even changed this to 'abc123' and it still worked while the other two instances were still 'album'.
        ),
    ),
);
Теги:
routes
zend-framework
zend-framework2

1 ответ

6
Лучший ответ

По умолчанию ZF ищет представления с использованием /<module>/<controller>/<action>.phtml. "модуль", "контроллер" и "действие" нормализуются к нижнему регистру, а слова верблюда с окошком преобразуются в тире.

В вашем примере слово "альбом" повторяется, потому что и модуль, и контроллер называются так. Если бы у вас был контроллер треков в модуле альбома и они смотрели действие "добавить", по умолчанию ZF будет искать представление в /album/tracks/add.phtml.

Что касается того, почему имена преобразуются в нижний регистр, с головы до ног я не могу вспомнить. Возможно, из-за того, что имена классов PHP/функций не чувствительны к регистру, это может быть связано с тем, что в большинстве случаев люди используют слова в нижнем регистре в URL-адресах, или это может быть просто потому, что в целом так люди организуют сайты вне рамок. Вероятно, это сочетание этих вещей.

  • 0
    Хорошо, большое спасибо - снова LOL. Дело верблюда, превращенное в дефис, - это то, что меня отбросило. У меня был модуль и контроллер с именем ProductBriefs и я не мог понять, почему он искал product-briefs/product-briefs/action.phtml когда в моем коде не было ни одного product-briefs/product-briefs/action.phtml product-briefs .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню