2011-11-02 80 views
0

我想要使用cakephp的以下類型的URL。json格式的cakephp url參數

http://localhost/project1/controller1/action1/[{"user_id":"1","udid":"","msg":"","nick_n":"Danis","post_t":"2011-10-21 12:15:00","source":"A"}]/50 

其中[{"user_id":"1","udid":"","msg":"","nick_n":"Danis","post_t":"2011-10-21 12:15:00","source":"A"}]和50是參數。

我在/app/config/routes.php文件中寫了以下代碼行。

Router::connect('/controller/action/*', array('controller' => 'controller1', 'action1' => 'actionName')); 

但是,當我調試上面的URL,我沒有得到json格式的參數。

這是我的行爲。

function action1($arg1 = NULL, $arg2 = NULL) { 
     // I am getting 50 in $arg1 and $arg2 = NULL. 
} 

請告訴我,我是否錯過了這裏。我沒有在$ arg1中獲得json格式的參數。

謝謝。

回答

1

問題是由「:」字符造成的。

在CakePHP可以設置named parameters在URL中,所以如果你有一個像網址:

mysite.com/name:John 

蛋糕將產生在控制器中$this->params['named']陣列。在你的情況下,蛋糕將識別URL中的「:」,它會嘗試創建命名參數..不幸的是,url編碼參數不會解決問題

您可以更改指定的分隔符參數..但我想說,進行最好的辦法是隻爲這一特定的URL創建一個custom route class,而該網站的其餘部分將使用常規路由類

希望這有助於