4

我目前正在使用来自 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如果它在阅读本文时仍然存在!)

4

3 回答 3

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'
    )
)

你可以看到我添加了 /[:module 和 deafults 和约束

于 2012-02-15T07:48:03.880 回答
4

我在 github https://github.com/akrabat/zf2-tutorial + pdf 上找到了很好的例子,并附有解释 http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework-2.pdf

于 2011-11-17T17:15:42.117 回答
1

您可以在 module.config.php 文件中使用“ child_routes ”属性,该文件位于 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

于 2015-06-20T07:20:43.603 回答