Я пытаюсь установить Cookie
в Laravel 4 по определенному маршруту.Настройка Cookies в Laravel 4 работает только в App :: after()
К сожалению, установка Cookie
работает только с глобальным фильтром App::after()
.
Первое, что я пробовал, возвращал ответ с Cookie
из моего Controller
.
Это не работает:
return Response::make($view)->withCookie(Cookie::make('foo','bar'));
Однако это делает:
return Response::make()->withCookie(Cookie::make('foo','bar'));
Но не решить мою проблему.
Далее я попробовал фильтр after
следующим образом.
Route::filter('cookie', function($route, $request, $response)
{
$response->withCookie(Cookie::make('foo', 'bar'));
});
Это также не работает.
Далее, я попробовал его с помощью Cookie::queue()
, который я нашел в другом answer - не повезло.
Единственное место, где установлено Cookie, находится в App::after()
.
App::after(function($request, $response)
{
$response->withCookie(Cookie::make('foo', 'bar'));
});
Кроме того, я уверен, что один из других подходов, должен работать, это решение не дает мне контроль я ищу.
Я бегу Laravel v4.0.9.
Как вы пытаетесь получить доступ к файлу cookie? Помните, что файлы cookie недоступны до загрузки ** следующей ** страницы. Именно так работают cookie, независимо от реализации фреймворка. –
Я использую (Browser) Web Inspector, чтобы проверить, установлен ли файл cookie или нет. –
Я думаю, что проблема заключается в том, что вы устанавливаете cookie 'before', объект ответа еще не создан. Затем в вашем контроллере вы создаете «новый» Response :: return() и т. Д., Поэтому любые предыдущие значения перезаписываются. Вот почему он работает над вашим фильтром «after», потому что вы добавляете его в созданный объект. – Laurence