4

タイトルの通り、

これがコードです...

public function index(Request $request, Application $app)
{
    $cookies = $request->cookies;
    print_r($request->cookies);
    if(!$cookies->has("recordsPerPage"))
    {
        $response = new Response();
        $cookie = new Cookie("recordsPerPage", $app['defaultRecordsPerPage']);
        $response->headers->setCookie($cookie); 
    }
    print_r($request->cookies);exit; //prints nothing here !!
}

私もそれを設定しようとしました$app->after()が失敗しました。コントローラー以外で Cookie を設定する方法はありますか。

ありがとうございました。

4

1 に答える 1

7

Cookie は応答とともに設定され、次の要求で使用できます。したがって、この Cookie を使用して応答を返す必要があります。リクエストで使用できるようにする場合は、リダイレクト応答にして、ブラウザーが Cookie を設定し、この新しく作成された Cookie を使用して次の要求を発行するようにします。

$cookies = $request->cookies;
if(!$cookies->has("recordsPerPage"))
{
    $cookie = new Cookie("recordsPerPage", $app['defaultRecordsPerPage']);
    $response = Response::create('', 302, array("Location" => "http://127.0.0.1/whatever/"));
    $response->headers->setCookie($cookie);
    return $response;
}else{
    return print_r($cookies, 1);
}

別の可能性として、この Cookie をリクエストに直接設定する$request->cookies->set('recordsPerPage', $app['defaultRecordsPerPage']);こともできます ( ) が、この Cookie を含む応答を返してブラウザに設定する必要があります。

于 2013-01-27T14:29:15.627 に答える