post-image

Resource Controller

Laravel cơ bản

Laravel cung cấp một tiện ích cho phép chúng ta nhanh chóng khởi tạo được một controller với đầy đủ các action CRUD thông dụng. Việc này có thể đạt được dễ dàng thông qua sử dụng chỉ một dòng lệnh.

Chẳng hạn, để tạo một controller quản lý tài nguyên là ‘photo’ ở trong ứng dụng, chúng ta có thể sử dụng câu lệnh ‘make:controller’. 

php artisan make:controller PhotoController --resource

Câu lệnh trên sẽ sinh ra một controller tại thư mục app/Http/Controllers/PhotoController.php. Controller này bao gồm các phương thức cho các thao tác CRUD để quản lý ‘photo’.

Sau đó, chúng ta đăng ký một route resource cho controller:

Route::resource('photos', 'PhotoController');

Khai báo route này sẽ tạo ra nhiều route con trỏ đến các action tương ứng của controller. Controller này đã có sẵn một số phương thức thông dụng, chẳng hạn như:

VerbURIActionRoute Name
GET/photosindexphotos.index
GET/photos/createcreatephotos.create
POST/photosstorephotos.store
GET/photos/{photo}showphotos.show
GET/photos/{photo}/editeditphotos.edit
PUT/PATCH/photos/{photo}updatephotos.update
DELETE/photos/{photo}destroyphotos.destroy

Giả lập các method của form

Bởi vì trong HTML thì chúng ta chỉ có thể khai báo các phương thức GET và POST của HTTP, đo đó chúng ta không thể sử dụng các phương thức như PUT hay DELETE. Để xử lý việc này, chúng ta có thể giả lập các phương thức này bằng cách thêm một trường có tên là ‘_method’ vào trong form HTML. Chúng ta có thể sử dụng directive ‘@method’ để làm việc này, chẳng hạn như:

<form action="/foo/bar" method="POST">   
     @method('PUT')
</form>

Trong ví dụ này, khi form gửi dữ liệu lên server thì sẽ được Laravel hiểu là một request với phương thức PUT chứ không phải là POST.

Leave a Reply

Your email address will not be published.