2015-06-30 3 views
5

Я пытаюсь установить куки, когда я загружаю вид:Laravel 5,1 Cookie Issue

$cookie = Cookie::make('mycookie', $myval, 43200); 
$view = view('myview')->with($data); 
return Response::make($view)->withCookie($cookie); 

И прочитал печенье на более позднем запросе:

if (Cookie::has('mycookie')) { 
    //do something 
} 

Куки никогда не будет установлено. .. где я иду не так?

ответ

4

Это работает надежно установить печенье с Laravel:

use Illuminate\Http\Request; 
use Illuminate\Contracts\Cookie\Factory; 

    class MyClass 
    { 

     public function handle(Request $request, Factory $cookie) 
     { 
      $cookie->queue($cookie->make('myCookie', $request->someVal, 129600)); 
      return redirect('/myPage'); 
     } 

    } 
2

Вы можете создать печенье как следующих

$view = view('myview')->with($data); 

$response = new Illuminate\Http\Response($view); 

return $response->withCookie(cookie('name', 'value', $minutes)); 

Или вы можете поставить в очередь печенья, как показано ниже, и оно будет отправлено с следующим запросом,

Cookie::queue('name', 'value'); 

return response('Hello World'); 

Read More

+0

Это дает ошибку: Method 'withCookie' не найден в классе Осветите \ Http \ Response – suncoastkid

+0

странным, потому что метод есть, https: // GitHub. com/laravel/framework/blob/5.1/src/Illuminate/Http/ResponseTrait.php –

+0

Cookie :: queue ('mycookie', $ myval, 43200); $ view = view ('myview') -> с ($ data); ответ возврата ($ view); тоже не работает. Нет ошибки, но нет cookie. – suncoastkid

0

Возможной причиной вашей недостающей проблемы с файлами cookie может быть, что если у вас есть недействительная директива Blade, страница будет отображаться нормально, однако любой набор cookie не будет сохранен.

Я столкнулся с этой проблемой, как я включил @script в моем шаблоне лезвия, а не @section('script')

Я подозреваю, что причина печенье действительно получить набор является то, что плохая директива вызывает ошибку в скомпилированный код PHP, что точка зрения получает кэшируется, так как обработка данных завершается перед передачей файла cookie.