1
我的鏈接:CakePHP的自定義路由W /%20 URL要替換瓦特/ 「 - 」 不知道如何做到這一點的路線
echo $link->link($planDetailsByCompany['PlanDetail']['name'],
array('controller' => 'plan_details', 'action' => 'view_benefit_schedule',
'id' => $planDetailsByCompany['PlanDetail']['id'],
'slug' => $planDetailsByCompany['PlanDetail']['name']));
我的定製路線:
Router::connect('/pd/:id-:slug',
array('controller' => 'plan_details', 'action' => 'view_benefit_schedule'),
array('pass' => array('id', 'slug'),
'id' => '[0-9]+'));
我的網址顯示,像這樣:
..pd/44-Primary%20Indemnity
我無法確定如何刪除%20並將其替換爲「 - 」。公司名稱中有一個導致此問題的空間。這可能在CakePHP路由器功能中嗎?如果是這樣,怎麼樣?或另一種方法。
但這可能只適用於此/您的情況。如果你使用真正的slu,子,那麼url需要沒有id。要使用真正的slu you,你需要一個額外的獨特的數據庫字段,並在那裏保存slu((使用Inflector :: slug) – alexdd55 2011-06-01 20:06:33
http://42pixels.com/blog/slugs-ugly-bugs-pretty-urls你*不*需要有一個db字段來執行slug查找。此方法使用自定義路由和參數來執行slug類型的url。否則,你需要確定你的PlanDetail.name值是完全唯一的 - 如果沒有,那麼你的slu could可能會匹配2個ID使用Inflector :: slug在字段上,就像你正在做的那樣。 – 2011-06-02 02:29:40
除了我的解決方案,Inflector :: slug()還有一個額外的參數(默認爲下劃線),我想要破折號,所以在第二個參數中,只需添加你想要的分隔符:['PlanDetail'] [''名稱'],' - '),然後破折號替換默認的下劃線。 – OldWest 2011-06-02 04:20:25