2011-08-17 180 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