2010-08-05 104 views
0

我一直在試圖shortern這條路線:
http://abc.localhost/user/view/index/id/1Zend框架 - 路由器重寫用正則表達式

這樣:
http://abc.localhost/user/1

用的代碼在我的引導下部分,但我不斷收到錯誤指出「未反轉路線未指定」,有什麼想法爲什麼?

$route = new Zend_Controller_Router_Route_Regex(
    'user/(\d+)', 
    array(
     'module'  => 'user', 
     'controller' => 'view', 
     'action'  => 'index' 
    ), 
    array(
     1 => 'id' 
    ) 
); 
$router->addRoute('user', $route); 

感謝,
馬丁

回答

4

如果你想使用你需要一個第四個參數傳遞給Zend_Controller_Router_Route_Regex,它可以用它來重建路徑正則表達式路由URL幫手。這第四個參數應該是一個sprintf格式的字符串,它可以將參數注入。

在你的情況下,它會是這樣的:

$route = new Zend_Controller_Router_Route_Regex(
    'user/(\d+)', 
    array(
     'module'  => 'user', 
     'controller' => 'view', 
     'action'  => 'index' 
    ), 
    array(
     1 => 'id' 
    ), 
    'user/%d' 
); 
$router->addRoute('user', $route); 

上有在上路線正則表達式手冊節結束這一權利的一些信息:http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.regex - 但它很容易錯過。

+0

奇妙的是,它!謝謝! – Martin 2010-08-05 16:48:45