2010-08-23 48 views
0

找不到我的解決方案。希望你能幫助。zend默認的控制器動作,在出錯之前

我想有一個網址(如Twitter)www.domain.com/USERNAME

發生什麼它去錯誤控制。我希望它在這些情況下轉到不同的控制器。某種默認控制器,如果沒有找到。

讚賞一個小例子或任何信息。

感謝,

回答

2

您應該創建一個自定義路由:

:username 

但要確保,你先添加這條路線,使下列途徑可以比擬的。有關自定義rotues信息,請參閱路由器的文檔:

http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes

+0

問題在這裏,它使用它不檢查控制器是否存在。這是一種默認設置。 例如,如果我有www.domain.com/user/和「用戶」是一個控制器,它試圖使用戶名 – 2010-08-24 08:01:22

+0

那麼你只能使用這個,如果你只使用自定義路由,而不是默認的模塊路由,順便說一句,twitter也是這樣做的。 – DASPRiD 2010-08-24 08:20:41

+0

是的,這就是我的想法,歡呼聲 – 2010-08-24 08:54:46

0

得到它具有以下工作。

將此代碼放置在引導程序中。

$front = $this->getResource("frontController"); 
$front = Zend_Controller_Front::getInstance(); 
$router = $front->getRouter(); 

$route = new Zend_Controller_Router_Route('/:username', array('controller' => 'index','action' => 'user')); 

$router->addRoute('minipage', $route); 

此一個替代方案是將所述規則中的config.ini:

routes.router.type = "Zend_Controller_Router_Route" 
routes.router.route = "/:username" 
routes.router.defaults.controller = "index" 
routes.router.defaults.action = "minipage" 

;rules for the exception to the above rulles. 

routes.indexItem.type =Zend_Controller_Router_Route 
routes.indexItem.route    = cms 
routes.indexItem.defaults.controller = cms 
routes.indexItem.defaults.action  = index 


routes.indexItem2.type =Zend_Controller_Router_Route 
routes.indexItem2.route    = policy 
routes.indexItem2.defaults.controller = policy 
routes.indexItem2.defaults.action  = index 


routes.indexItem3.type =Zend_Controller_Router_Route 
routes.indexItem3.route    = index 
routes.indexItem3.defaults.controller = index 
routes.indexItem3.defaults.action  = index 

以及使用

$前置式> getRouter()引導加載這個 - > addConfig (新的Zend_Config_Ini(APPLICATION_PATH。「/configs/routes.ini」),「routes」);