Trong bài viết về Route Laravel chúng ta đã được biết cách viết cũng như các thành phần trong đó. Vì bài đó viết dài sợ bạn đọc nhiều quá sẽ bị rối. Vì vậy trong bài viết này mình sẽ nói tới Route resource. Để trả lời nó là gì? Tại sao lại cần đến nó?

Khi xây dựng chức năng thêm, sửa, xóa thì đương nhiên là sẽ phải tạo ra 4 hàm khác nhau. Và trong route cũng phải tạo ra các URL tương ứng.

Tuy nhiên với Route resource chỉ cần khai báo một dòng duy nhất mà thôi. Hãy cùng xem cách sử dụng như thế nào nhé.

Một file Controller thường thấy khi tạo CRUD

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogController extends Controller
{

    public function index()
    {
        //
    }

    public function create()
    {
        //
    }

    public function store(Request $request)
    {
        //
    }

    public function show($id)
    {
        //
    }

    public function edit($id)
    {
        //
    }

    public function update(Request $request, $id)
    {
        //
    }

    public function destroy($id)
    {
        //
    }
}

Và trong Route

Route::get('posts/index', 'App\Http\Controllers\[email protected]');
Route::get('posts/create', 'App\Http\Controllers\[email protected]');
Route::get('posts/show', 'App\Http\Controllers\[email protected]');

// Bla bla...

Còn khi dùng Route resource bạn chỉ cần khai báo một dòng

Route::resource('posts', 'BlogController');

Khi viết action trong Views thì sẽ như sau

Phương thứcURIHành độngRoute name
GET/posts/{posts}/editAction tới hàm editposts.edit
PUT|PATCH/posts/{posts}Action tới hàm updateposts.update
DELETE/posts/{/posts}Action tới hàm destroyposts.destroy
GET/postsAction tới hàm index khai báo trong Controllerposts.index
GET/posts/createSẽ action tới hàm createposts.create
POST/postsAction tới hàm storeposts.store
GET/posts/{posts}Action tới hàm showposts.show

Ví dụ cho bạn dễ hiểu hơn nhé!

Bước 1: Tạo tập tin là HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{

    public function index()
    {
        echo 'Đây là index';
    }

    public function create()
    {
        echo 'Đây là hàm create';
    }

    public function destroy()
    {
        echo 'Đây là hàm destroy';
    }

}

Bước 2: Khai báo Route (Tại E:\xampp\htdocs\thu_muc_laravel\routes\web.php)

Route::resource('posts', 'BlogController');

Bước 3: Gõ lần lượt đường dẫn sau lên trình duyệt để thử kết quả

http://localhost/thu_muc_laravel/posts/
http://localhost/thu_muc_laravel/posts/create
http://localhost/thu_muc_laravel/posts/destroy

Loại trừ action

Khi khai báo như thế nào chỉ được phép lấy index và show

Route::resource('posts', 'HomeController')->only([
    'index', 'show'
]);

Loại trừ

Route::resource('posts', 'HomeController')->except([
    'create', 'store', 'update', 'destroy'
]);

Sử dụng action route trong Views

<a href="{{ route('posts.create') }}">Create</a>

{{ route(‘posts.create‘) }} đây chính là route name.

Với bài viết về Route resource trong Laravel bạn có cảm thấy khó hiểu không ạ? Cách đơn giản nhất là hãy tạo ra các tập tin và chạy bạn sẽ hiểu được những gì đã đọc ở trên.

Cùng chủ đề

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *