2013-04-09 51 views
0

我升技卡住揣摩我怎麼可以在URL中使用塞與命名參數數組:CakePHP的 - 段塞與命名參數數組

的網址如下:/controller/action/param:1-Slug1/param:2-Slug2/param:3-Slug3

這給我下面的請求對象中的已命名參數數組:

[named] => Array 
     (
      [param] => Array 
       (
        [0] => 1-Slug1 
        [1] => 2-Slug2 
        [2] => 3-Slug3 
       ) 

     ) 

如何配置路由以考慮段塞?這樣的輸出是:

[named] => Array 
      (
       [param] => Array 
        (
         [0] => 1 
         [1] => 2 
         [2] => 3 
        ) 

      ) 

感謝您的幫助。

回答

0

首先,你不需要那麼[0], [1]東西,通過命名您的參數相同,你會自動創建一個數組。因此,您的網址更改爲

/controller/action/param:1-Slug1/param:2-Slug2

您的這條路線將如下所示,

Router::connect('/:controller/:action/*');

通過傳遞一個明星在年底的路線將自動通過任何額外參數是你已經添加了。這將允許您將許多參數傳遞到您想要的url中。

如果你想使用一個命名參數的路線是這樣的。

Router::connect('/:controller/:action:/:slug', array(), array('slug' => '[a-z0-9-]+'));

將在爲了使匹配的路由匹配對正則表達式的蛞蝓。正則表達式允許任何字母,數字和連字符。

在這裏閱讀更多,http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to-action

+0

嗨大衛......似乎沒有工作...我已經設置這條路線... '路由器連接::('/統計/趨勢/:蛞蝓」,陣列( '控制器'=> '統計', '動作'=> '趨勢'),陣列( '蛞蝓'=> '[A-ZA-Z0-9 - ] +'));'和時訪問_/stats/trends/param:1-test_ ...我在請求參數中得到以下數據... '[named] => Array ( [param] => 1-test ) – 2013-04-10 08:47:53

+0

是的,這是您的路線預計。 – 2013-04-10 09:21:38

+0

我需要擺脫 - 測試部分的...所以我需要輸出爲[命名] =>陣列([參數] => 1) – 2013-04-10 09:26:14