我想使用cakephp跟踪以下类型的网址。
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格式的参数。
感谢。
答案 0 :(得分:1)
问题是由“:”字符引起的。
在CakePhp中,您可以在网址中设置named parameters,如果您有以下网址:
mysite.com/name:John
cake将在控制器中生成$this->params['named']
数组。在你的情况下,蛋糕将识别网址中的“:”,它将尝试创建命名参数..不幸的是,url-encoding参数将无法解决问题
您可以更改命名参数的分隔符..但我要说的最好的方法是仅为此特定网址创建custom route class,网站的其余部分将使用正常路线类
希望这有帮助