---
description: https://viblo.asia/p/tap-16-request-laravel-aWj534Y8K6m
---

# 19. Đính kèm cookie đến response (Attaching cookie to response) (ok)

Bạn có thể đính kèm mộ cookie đến object `Illuminate\Http\Response`bằng cách sử dụng method `cookie`. Bạn nên truyền đầy đủ tham số tên, giá trị cookie và thời gian tồn tại của cookie (tính theo phút). Nếu bạn bỏ qua tham số thời gian, Laravel sẽ coi cookie tồn tại như một session.

```
return response('Hi')->cookie('name', 'Lê Chí Huy', $minutes);
```

Method `cookie` hoạt động tương tự hàm `setcookie` mặc định của PHP. Chính vì vậy nó cũng có thể nhận một số tham số tùy chọn khác.

```
return response('Hi')->cookie(
    'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
);
```

Ngoài ra bạn có thể sử dụng method `queue` trong `Cookie` facade. Nói một chút về "queue", nó có nghĩ đen là "xếp hàng". Hiểu một cách đơn giản, thì set cookie "queue" sẽ thực hiện cuối cùng khi đã hoàn tất cả xử lý khác trong request hiện tại. Để hiểu hơn thì chúng ta sẽ đi đến thử nghiệm.

Tại blade view `form`, các bạn thay đổi nội dung như sau:

```
@inject('cookie', 'Illuminate\Support\Facades\Cookie')

<p>Hello, {{ $cookie->get('name') }}</p>

<form action="/post" method="POST">
    @csrf

    <div>
        <button type="submit">Set cookie</button>
    </div>
</form>
```

Mình đã inject `Cookie` facade để có thể lấy cookie tại blade template. Ngoài ra bên dưới còn có form đển thực thi set cookie thông qua method `post` trong `FormController`.

```
use Illuminate\Support\Facades\Cookie;

public function post(Request $request)
{
    Cookie::queue('name', 'Lê Chí Huy', 5);
    
    echo $request->cookie('name');
}
```

Bây giờ các bạn thử đoán xem khi mình click vào nút "Set cookie" thì có hiển thị cookie với tên `name` tại route `/post` không? Đáp án là "Không", như mình đã nói ở trên, cookie `name` được thiết lập bằng phương thức "queue", chính vì vậy nó sẽ thực hiện sau cùng, sau cả lệnh `echo` cookie. Nhưng nếu bạn đi đến đường dẫn http:/localhost:8000 thì tại blade view `form`, sẽ render cookie mà ta vừa set.

![](https://images.viblo.asia/e5c7d746-acd0-45d8-9064-4c415d4eeae9.JPG)
