Zend Framework 2 - несколько модулей по URL - PullRequest
3 голосов
/ 10 ноября 2011

В настоящее время я использую приложение ZendFrameworkSkeleton от Git и пытаюсь использовать его модульную часть, чтобы иметь множество модулей, изменяемых по URL, например:

http://localhost/application/index/index/
http://localhost/guestbook/index/index/
http://localhost/forum/index/index/

Кроме того, как бы выиспользуйте язык там и для будущего расширения:

http://localhost/en/application/index/index/
http://localhost/de/application/index/index/
http://localhost/en/forum/index/index/

Я бы подумал, что в этом и заключается весь смысл модулей ZF2, и я удивлен, что он не работает "из коробки".Кто-нибудь получил какое-либо представление о том, как это должно быть сделано или, возможно, ссылку на пример / учебник этого?

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

Как только я это выяснил, я могу сделать пример приложения на Github, поскольку знаю, что другие люди интересуются этим.

Edit @ 24/11 /2011: С тех пор я наткнулся на сообщение EvanDotPro на форуме для участников о том, что они говорят о том, что они не хотят делать что-то с модулем / контроллером / действием ZF1, и что на это не было особого спроса.Он на самом деле написал пример, в котором он работал примерно так, но сказал, что он не работает на 100%.Так что любой, кто сталкивается с этим постом, ищет дополнительную информацию и немного более сообразителен, чем это: https://github.com/EvanDotPro/EdpMagicRoute (если он все еще существует на момент прочтения этого!)

Ответы [ 3 ]

4 голосов
/ 15 февраля 2012

Для изменения маршрутизации вам нужно отредактировать Application / confid / module.config.php.Найдите там и измените на

'options' => array(
    'route' => '/[:module/[:controller[/:action]]]', 
    'constraints' => array(
        'module' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*'
    ), 
    'defaults' => array(
        'module' => 'Application', 
        'controller' => 'index', 
        'action' => 'index'
    )
)

Вы можете видеть, что я добавил / [: модуль и деактивы и ограничение

4 голосов
/ 17 ноября 2011

Я нашел хороший пример на github https://github.com/akrabat/zf2-tutorial + pdf с объяснением http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework-2.pdf

1 голос
/ 20 июня 2015

Вы можете использовать атрибут ' child_routes ' в файле module.config.php, который находится в файле module \ Application \ config

'routes' => array(
        'application' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/application',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/[:controller[/:action]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ),
    ),

, затем вы можете запустить localhost / application / index / index

...