2012-02-13 93 views
1

我試圖根據Cake2中的url擴展路由到不同的操作。我有這個工作路線:CakePHP:基於擴展的不同路由

Router::connect(
    '/:lang/:product/:version/:filename', 
    array(
     'controller' => 'pages', 
     'action'  => 'run', 
     'lang'   => ':lang', 
     'product'  => ':product', 
     'version'  => ':version', 
     'filename'  => ':filename' 
    ), 
    array(
     'pass'   => array('filename'), 
     'lang'   => '[a-zA-Z]{2}', 
     'product'  => '[a-zA-Z0-9_!\-]+', 
     'version'  => '[0-9]{3}', 
     'filename'  => '[a-zA-Z0-9_!\-\.]+' 
    ) 
); 

對於新的路線,我只是添加了擴展名,並改變了行動。

Router::connect(
    '/:lang/:product/:version/:filename.json', 
    array(
     'controller' => 'pages', 
     'action'  => 'get', 
     'lang'   => ':lang', 
     'product'  => ':product', 
     'version'  => ':version', 
     'filename'  => ':filename' 
    ), 
    array(
     'pass'   => array('filename'), 
     'lang'   => '[a-zA-Z]{2}', 
     'product'  => '[a-zA-Z0-9_!\-]+', 
     'version'  => '[0-9]{3}', 
     'filename'  => '[a-zA-Z0-9_!\-\.]+' 
    ) 
); 

出於某種原因,儘管run行動仍稱(包括分機,所以/../pages/json/run.ctp)。

感謝您的幫助!

回答

1

嗯它可能是因爲你告訴蛋糕:filename可以包含一個點[a-zA-Z0-9_!\-\.]+那麼路由器將總是匹配的第一個規則的第一條規則的第一條路線

對正則表達式..的

嘗試改變路線的順序,從特殊到一般

還要檢查蛋糕如何管理file extensions on routes

希望這有助於

+0

感謝您的回覆。不幸的是,這並沒有幫助。我改變了路線的順序,並拿出了點。仍然Cake發送到'run'動作 – harpax 2012-02-14 09:05:33