Ở bài trước chúng ta đã tìm hiểu về 4 loại Route trong Laravel là Route::get(),post(),any(),match(),.. rồi, ở phần này chúng ta sẽ tìm hiểu tiếp về Route::resource() trong Laravel nhé các bạn. 1. Route::resource().Route::resource() là một route có chức năng giúp chúng ta Xây dựng RESTful(web sevice) một cách nhanh chóng. Cú Pháp Route::resource().Route::resource('url', 'tencontroller', 'tuybien'); Trong đó:
2. Tạo RESTful ControllerĐể tạo một RESTful Controller chúng ta có hai các tạo: Cách 1: Là tạo bằng tay và viết code cũng bằng tay. Cách 2: Dùng lệnh mà laravel cung cấp sẵn cho chúng ta. Các bạn mở commanline lên và trỏ đến thư mục chứa project Laravel (VD của tôi là laravel-tutorial) và gõ lệnh. php artisan make:controller TenController --resource Ví dụ ở đây mình tạo controller DemoController thì gõ code như sau: php artisan make:controller DemoController --resource Một controller có tên là DemoController sẽ được tạo trong thư mục laravel-tutorial/app/Http/Controllers và nó có dạng <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class DemoController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } } Chú thích các function:
Điểm mạnh của RESTful Controller là sinh ra cho chúng ta các phương thức luôn có trong một ứng dụng VD: Chúng ta có một route Route::resource('oto', 'OtoController'); Thì phương thức cũng như kiểu request của nó sẽ như sau.
Trong đó:{oto} là các tham số id của photo (xem truyền tham số trong route). Khả năng tùy biếnCó thể thấy RESTful Controller có rất nhiều action và Laravel cũng cung cấp cho chúng ta lọc action trong Route::resource() để lọc các phương thức được sử dụng trong RESTful : Ví dụ chúng ta sử dụng Lọc các phương thức được sử dụng trong RESTful: Route::resource('urlroute', 'OtoController', ['only' => ['index', 'create', 'show', 'edit']]); Giải thích: Ở trên là đoạn code chỉ cho sử dụng các action được khai báo còn lại sẽ không được sử dụng Ví dụ chúng ta sử dụng Lọc các phương thức không được sử dụng trong RESTful: Route::resource('duong dan route', 'OtoController', ['except' => ['index']]); Giải thích: Cấm không cho sử dụng action index còn lại được sử dụng hết. Lời kết: Phần Route resource() trong Laravel có chút khó hiểu vì vậy các bạn cần chú ý theo dõi nhé. Chúc các bạn học tốt! |