Giả mạo phương thức form trong Laravel (phần 2)

Giả mạo phương thức form (tiếp tục)

Hãy nhìn vào một ví dụ nơi chúng ta sẽ sử dụng giả mạo phương thức để cập nhật một tài nguyên
thông qua một yêu cầu PUT. Trong trường hợp này, chúng ta sẽ giả mạo chúng ta đang cập nhật
một blog post.
Trước tiên, trong file web routes (routes/web.php), bạn có thể có một route cái trả lời tới các
yêu cầu PUT giống cái này:

Route::put( ‘/post/{id}’ , [PostController::class,
‘update’ ]);

Cái này có nghĩa rằng khi một yêu cầu PUT được thực hiện tới /post/{id}, phương thức update của một
PostController sẽ được thực thi.
Bây giờ, giả sử bạn có form trên trang web của bạn để cập nhật một blog post.
Vì các HTML forms chỉ hỗ trợ các phương thức GET và POST, bạn sẽ cần sử dụng giả mạo phương thức để
thực hiện một yêu cầu PUT:

<form action= “/post/{{ $post->id }}” method= “POST” >
@csrf
@method( ‘PUT’ )
<div>
<label for = “title” >Title</label>
<input type= “text” id= “title” name= “title”
value= “{{ $post->title }}” >
</div>
<div>
<label for = “body” >Body</label>
<textarea id= “body” name= “body” >{{ $post-
>body }}</textarea>
</div>
<div>
<button type= “submit” >Update Post</button>
</div>
</form>

Trong form ở trên, @csrf là một mã lệnh blade cái thêm một trường _method ẩn vào form. Phương thức của
form là POST, nhưng khi Laravel nhận yêu cầu, nó sẽ thấy trường _method và đối xử yêu cầu như một yêu cầu
PUT.
Nên khi form được đệ trình, phương thức update trên PostController sẽ được thực thi, chính như thể form đã
thực hiên yêu cầu PUT trực tiếp.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *