jason格式的cakephp url参数

时间:2011-11-02 10:32:08

标签: php cakephp routes cakephp-1.3

我想使用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格式的参数。

感谢。

1 个答案:

答案 0 :(得分:1)

问题是由“:”字符引起的。

在CakePhp中,您可以在网址中设置named parameters,如果您有以下网址:

mysite.com/name:John

cake将在控制器中生成$this->params['named']数组。在你的情况下,蛋糕将识别网址中的“:”,它将尝试创建命名参数..不幸的是,url-encoding参数将无法解决问题

您可以更改命名参数的分隔符..但我要说的最好的方法是仅为此特定网址创建custom route class,网站的其余部分将使用正常路线类

希望这有帮助