无法在CakePHP中设置POST方法路由

时间:2012-10-20 19:38:17

标签: cakephp rest http-headers cakephp-1.2

我在CakePHP 1.2中设置了以下路线:

Router::connect(
    "/inbound/:hash",
    array('controller' => 'profiles', 'action' => 'inbound', '[method]' => 'POST'),
    array('hash' => '[0-9a-zA-Z]+'),
    array('pass' => array('hash'))
);

以下是我的请求标头(通过drupal_http_request()):

POST /inbound HTTP/1.0
Host: mysite.dev
User-Agent: Drupal (+http://drupal.org/)
Content-Length: 45

hash=test

但是,当我发帖时,我收到了404回复。如果我从路由定义中删除参数“:hash”,我得到200.但在这两种情况下,我的控制器中的操作都没有获得传递的参数(哈希)。

我不确定我做错了什么,因为我似乎在做what is in the doc

1 个答案:

答案 0 :(得分:1)

pass参数的目的是定义将哪些路由参数传递给操作。所以你在那里做的是创建一个连接到这样的URL的路由:

/inbound/foo

其中foo将作为参数传递给控制器​​inbound操作。

但是,您的请求仅指向/inbound,因此这与您的路线不匹配,因为缺少参数,因此您收到的是404。

POST请求正文中的数据作为常规POST数据传递,即可通过控制器params属性获取:

$this->params['form']['hash']

因此,要么删除路由中的hash参数并通过$this->params['form']访问数据,要么传递定义hash参数的URL中的数据:

/inbound/test

然后您可以在控制器操作中访问它,如下所示:

function inbound($hash)
{
    echo $hash;
}