2011-09-05 55 views
0

我正在嘗試爲我的CakePHP應用程序設置路由。CakePHP路由:隔離字符串中傳遞的參數

我想要的一個URL的例子是/:slug-c-:id/。 (EG example.com/foo-c-1/

該URL應該有兩個傳遞的參數::slug:id
但是,CakePHP將這兩個參數看作:slug-c:id

我試圖分離這樣:slug\-c-:id的路線,但後來當我使用HTML幫助創建一個URL,它包括它建立字符串中的\。 (EG example.com/foo\-c-1/

有另一種方式來分離從其他字符串傳遞參數的東西,如PHP的This is a string with a {$var}adjacent to letters

回答

0

我發現,我寧可不使用有點哈克的解決方案,但基本上我建立了我的路線是?

/:slug-:cslug-:id/*並設置:cslug的正則表達式來c

的問題,這是我每次設置與HTML幫助一個URL時我要做

array(
    'controller' => 'products' 
    'action' => 'index' 
    'slug' => 'Foo' 
    'cslug' => 'c' 
    'id' => 1 
) 
0

使其爲/:slug-:id/並設置slug的正則表達式以包含'-c'。

我不完全確定你可以設置貪婪的正則表達式爲slu with與id在最後。此外,如果您使用Inflector創建slug(這是推薦的方式),它會創建帶下劃線的slug。所以我認爲最好用'_c'代替。正則表達式應該是沿線[A-Za-z0-9_]+_c

這裏更多:http://book.cakephp.org/view/945/Routes-Configuration