1

我在 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。但在这两种情况下,我的控制器中的操作都没有得到传递的参数(哈希)。

我不确定我做错了什么,因为我似乎在做doc 中的内容

4

1 回答 1

1

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

/inbound/foo

wherefoo将作为参数传递给控制器inbound​​操作。

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

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

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

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

/inbound/test

然后您可以像这样在控制器操作中访问它:

function inbound($hash)
{
    echo $hash;
}
于 2012-10-20T22:40:58.627 回答