Zend Framework - 模块路由

时间:2011-08-17 17:11:21

标签: zend-framework

我有一个名为users的模块。在里面我有一个索引控制器,在索引控制器类中有一个名为part1Action()的动作。

我希望能够通过路径/ user / index / part1访问part1Action()动作,但我最终会在/ user / index / index动作中结束。

我已经设置了其他模块,从模块/控制器的角度来看,但我没有尝试访问除了这些中的索引操作之外的其他操作,所以这是我第一次尝试路由到除了索引行动。

更多信息,我在我的application.ini中有这个:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""
autoloaderNamespaces[] = "Users_"

我哪里错了?

1 个答案:

答案 0 :(得分:2)

part1Action 不会是有效的动作名称,因为它包含一个数字。将操作命名为 partOneAction 。如果你绝对想在你的网址中使用一个数字,那就设置一个像这样的路由规则

$front->getRouter()->addRoute(
    'part-1',
    new Zend_Controller_Router_Route_Static(
        '/user/index/part1/',
        array('module' => 'users', 'controller' => 'index', 'action' => 'part-one')
    )
);

$front->getRouter()->addRoute( 'part-1', new Zend_Controller_Router_Route_Static( '/user/index/part1/', array('module' => 'users', 'controller' => 'index', 'action' => 'part-one') ) );

老实说,我可能会稍微改变一下我的模块。我假设这是一种多页形式的某种形式?

这样:

modules
    user
        controllers
            {some-meaningful-name}Controller.php

在{some-signific-controller-name}内部的Controller.php

    public function {some-meaningful-action-name}Action()
    {
        $part = $this->getRequest()->getParam('part', 1);
    }

您的网址将是

/user/{some-meaningful-controller-name}/{some-meaningful-action-name}/part/{some-number}