Zend Framework 2 - URL的多个模块

时间:2011-11-10 12:07:12

标签: php zend-framework2

我目前正在使用Git的ZendFrameworkSkeleton应用程序,并且我正在尝试利用它的模块部分来拥有大量模块,可以通过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模块的重点,我很惊讶它似乎没有开箱即用。任何人都知道这是怎么做的,或者可能是它的示例/教程的链接?

目前看来路由器位于每个模块内而不是整个应用程序中,我原以为它应该如何完成... 我猜你有一个应用程序模块可以执行路由和全局操作,注入依赖关系和什么不是,然后其他模块用于游戏,帐户,留言簿,论坛等不同的东西。

一旦我弄清楚了,我可以制作一个Github示例应用程序,因为我知道其他人对此感到好奇。

编辑@ 24/11/2011:我已经在贡献者论坛上看到了EvanDotPro的一篇文章,关于他们谈论他们不想做ZF1模块/控制器/行动方式做事而且没有'对它的需求很大。他实际上写了一个例子,让它运行这样的东西,但说它不能100%工作。所以任何遇到这篇文章的人都在寻找更多的信息并且更精明一点就是这样:https://github.com/EvanDotPro/EdpMagicRoute(如果它仍然存在于阅读本书的那一点!)

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:4)

要更改路由,您需要编辑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'
    )
)

你可以看到我添加/ [:模块和deafults和约束

答案 2 :(得分:1)

您可以使用' 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