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

The purpose of the pass parameter is to define which route parameters are being passed to the action. So what you are doing there is creating a route that connects to URLs like this:

/inbound/foo

where foo would be passed as a parameter to the controllers inbound action.

Your request however points to /inbound only, so this won't match your route as the parameter is missing, and consequently you are receiving a 404.

The data in the body of your POST request is being passed as regular POST data, ie it would be available via the controllers params property:

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

So either remove the hash parameter in the route and access the data via $this->params['form'], or pass the data in the URL where the hash parameter is defined:

/inbound/test

then you can access it in your controller action like this:

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