2011-03-13 114 views
2

比如我使用下面的網址,用戶配置文件/儀表板:我怎樣才能縮短我的網址中的Zend

example.com/person/person/profile 
example.com/person/person/dashboard 

模塊,第二控制器輪廓儀表板動作

但我想,如果用戶去以下網址,那麼他們應該指向上面分別提到的相同網址:

example.com/person/profile 
example.com/person/dashboard 

有什麼辦法,我總是從URL中移除模塊名稱?記住我想保留當前的目錄結構。

感謝

+3

我發現人是一個相對較差的模塊名稱,如果該模塊被稱爲人或用戶,那麼應該不需要具有相同名稱的控制器。控制器名稱應該是用戶級別以下的實體。 Like/user/account/login或/ user/profile /編輯 – markus 2011-03-13 19:38:07

+0

@markus:謝謝。這是一個非常好的建議。 – Awan 2011-03-13 19:49:52

回答

5

你可以做到這一點使用的路線,在引導文件添加此

protected function _initRoutes() 
{ 
    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini'); 
    $router = new Zend_Controller_Router_Rewrite(); 
    $router->addConfig($config, 'routes'); 
    Zend_Controller_Front::getInstance()->setRouter($router); 
} 

然後在你的配置主管創建一個名爲routes.ini,這將包含您的自定義路線,嘗試這些

routes.person_profile.route = "person/profile" 
routes.person_profile.defaults.controller = person 
routes.person_profile.defaults.action = profile 
routes.person_profile.defaults.module = person 

routes.person_dashboard.route = "person/dashboard" 
routes.person_dashboard.defaults.controller = person 
routes.person_dashboard.defaults.action = dashboard 
routes.person_dashboard.defaults.module = person 

在這裏,我們定義了兩條路線,記住給每個獨特的名稱,我稱之爲person_profileperson_dashboard

route值是URI將由controlleractionmodule值覆蓋,例如,路線person/profile將被自動分發到person控制器,所述person模塊和profle動作。

希望有所幫助。