Mẹo Laravel - Đặt tên cho router để sử dụng cho những thay đổi trong tương lai

Bạn có từng gặp phải những trường hợp giống như dưới đây không?

  • Một vài thành viên mới gia nhập vào team dev, và được phân công để làm một số tính năng trong dự án mà cả team đang làm. Trong dự án này, bạn thì sử dụng Route::resource để định nghĩa router, còn các thành viên mới ấy thì thêm cả tá các định nghĩa POST, GET riêng lẻ vào dự án.
  • Bộ phận Marketing của khách hàng/công ty muốn thay đổi toàn bộ đường dẫn hiện có của website thành đường dẫn khác, vì có sự thay đổi trong chiến lược marketing hoặc vì thay đổi thương hiệu nhãn hàng.
  • Lúc bạn mới bắt đầu, bạn đặt các đường dẫn cố định trong các thẻ a, và khi bạn cần phải thay đổi router, bạn phải mò mẫn tìm hết trong dự án những nơi mà bạn đã đặt cố định để thay đổi.

Nếu bạn chưa gặp những trường hợp vừa liệt kê, thì ắt hẳn, bạn sẽ gặp nó trong một thời điểm nào đó trong tương lai gần, có thể là khi bạn tham gia vào một dự án của một công ty, hoặc mở rộng team, hoặc khi bạn chuyển từ solo sang team. Làm thế nào để bạn có thể chuẩn bị trước cho những trường hợp như vậy?

Hãy đặt tên cho các router của bạn!

Khi bạn thêm tên cho một router, sau đó sử dụng helper route(), bạn sẽ có được duy nhất một chỗ để điều khiển/thay đổi router của bạn mà không cần phải đi tìm bất kỳ chỗ nào trong dự án để thay đổi nó. Dưới đây là một ví dụ cụ thể:

// Router hiện tại của bạn chưa được đặt tên
Route::get('/', 'HomeController@index');
// Thẻ a của bạn không sử dụng helper route()
<a href="/" title="Trang chủ">Trang chủ</a>
// Hoặc trong Controller
return redirect('/');

Sau khi bạn đặt tên cho router của mình, bạn sẽ được như sau:

// Router sau khi được đặt tên, sử dụng ->name('ten-route-cua-ban')
Route::get('/', 'HomeController@index')->name('home');

Và rồi, bạn có thể sử dụng thẻ a trỏ về trang chủ ở bất kỳ nơi nào như sau:

<a href="{{ route('home') }}" title="Trang chủ">Trang chủ</a>
// Hoặc trong Controller
return redirect(route('home'));

Trong tương lai, giả sử chủ dự án yêu cầu thay đổi đường dẫn trang chủ từ / thành /home thì bạn có thể dễ dàng thay đổi mà không cần phải tác động đến các thẻ a trỏ về trang chủ như sau:

// Cũ
Route::get('/', 'HomeController@index')->name('home');
// Mới
Route::get('/home', 'HomeController@index')->name('home');

Đấy! Đơn giản như vậy đấy!

Điều này không chỉ giúp bạn có được cấu trúc đường dẫn trên một nguồn thực sự tồn tại, mà Laravel còn báo lỗi khi một tên router (route name) nào đó không tồn tại, điều này sẽ giúp cho dự án của bạn không còn đường dẫn 404. Ngoài ra, một số chương trình hỗ trợ lập trình có công cụ hỗ trợ gợi ý tên router khi bạn code, ví dụ như phpStorm.

Cuối cùng, Laravel cũng tự động định nghĩa tên router dựa trên nguồn resource mà bạn đã đặt, và Laravel cũng cung cấp các tùy chọn cho tiền tố của tên một router. Bạn có thể đọc thêm trong tài liệu hướng dẫn của Laravel.

Đến đây thì mẹo đầu tiên đã kết thúc, rất cảm ơn bạn đã chịu khó đọc đến đây, nếu có chỗ nào khó hiểu, bạn có thể để lại bình luận, mình sẽ trả lời lại cho các bạn trong sự hiểu biết của mình nhé. Hẹn gặp lại bạn trong mẹo tiếp theo.

Chuyên đề: Mẹo Lập trình Laravel
Bài tiếp theo
Lưu ý: Hệ thống bài học theo Chuyên Đề đang được thử nghiệm.
Mẹo Laravel - Đặt tên cho router để sử dụng cho những thay đổi trong tương lai

Danh sách bài học

Cùng chuyên mục

Xem nhiều hôm nay