2011-08-17 183 views
0

我有一个叫做users的模块。里面我有一个索引控制器,在索引控制器类中有一个名为part1Action()的动作。我希望能够通过路径/ user/index/part1来访问part1Action()动作,但我最终会在/ user/index/index动作中结束。Zend Framework - 模块路由

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

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

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

我要去哪里错了?

回答

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

路由规则老实说,虽然,我可能会为我设置模块最多有点不同。我假设这是针对某种多页面形式的?

这样:

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

{一些无意义的控制器名} 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}

+0

这是有道理的! – Owen

+0

好的,我仍然缺少一些基本的东西,因为它不起作用。我在用户模块的索引控制器中将操作名称更改为partOneAction()。我期望在/ user/index/part-one达到它,但我仍然在获取用户/索引/索引操作。 – Owen

+0

我不明白它是如何工作的,在我的默认模块IndexController(application/modules/default/IndexController)我放了一个testAction()并且可以通过/ index/test访问它,但是如果我把testAction模块控制器(例如,application/modules/user/IndexController)我无法访问/ users/index/test中的操作。我错过了什么? – Owen