Routing trong Laravel, cách tạo Route và sử dung AZ
Routing trong Laravel ,cách tạo Routing trong Lavavel gồm: Tạo Route trong file , Tạo Route trong Controlller.
Routing là một trong những thành phần quan trọng của một ứng dụng Laravel. Nó cho phép ứng dụng xử lý các HTTP request và chuyển tiếp chúng đến các Controller hoặc các thao tác khác như xử lý dữ liệu, đăng nhập, xác thực,...
Trong bài biết này mình sẽ giới thiệu một số khái niệm cơ bản cũng như cú pháp và cách tạo về Routing.
1. Route là gì trong Laravel?
Route trong Laravel là một cơ chế quản lý URL trong framework Laravel. Route cho phép bạn định tuyến các URL của trang web của bạn đến các hàm xử lý tương ứng. Khi một người dùng gửi yêu cầu đến một URL, Laravel sẽ tìm xem URL đó có được định tuyến trong file routes hay không. Nếu tìm thấy, Laravel sẽ gọi hàm xử lý tương ứng với URL đó.
Bài viết này được đăng tại [free tuts .net]
Ví dụ:
Route::get('/', function () { return 'Hello World'; });
Trên đây là một ví dụ về việc định tuyến URL "/" với một hàm callback trả về chuỗi "Hello World".
2. Cú pháp route trong laravel
Basic Routing - Những điều khiển căn bản
Trong Laravel, cú pháp Basic Routing giúp bạn định tuyến đường dẫn URL đến một hoạt động hoặc một hàm xử lý trong ứng dụng của bạn.
Cách sử dụng cú pháp này là bằng cách sử dụng hàm Route:: để định tuyến URL và hàm xử lý tương ứng.
Ví dụ, nếu bạn muốn định tuyến URL "/home" đến hàm xử lý "HomeController@index", bạn có thể sử dụng cú pháp sau:
Route::get('/home', 'HomeController@index');
Bạn cũng có thể sử dụng các phương thức khác như 'post', 'put', 'delete' để định tuyến cho các yêu cầu HTTP khác.
Route::post('/submit-form', 'FormController@submit');
Ngoài ra, bạn cũng có thể định tuyến với tham số, ví dụ:
Route::get('/user/{id}', 'UserController@show');
Trong ví dụ trên, tham số ' {id} ' sẽ được truyền vào hàm xử lý 'UserController@show' như một tham số.
Cú pháp Basic Routing trong Laravel cung cấp một cách đơn giản và linh hoạt để định tuyến URL trong ứng dụng của bạn.
Route Parameters - Sử dụng tham số trong bộ định tuyến
Route Parameters là một tính năng trong Laravel cho phép bạn sử dụng tham số trong địa chỉ URL để xác định một hoạt động hoặc hàm xử lý tương ứng.
Ví dụ, bạn có thể định tuyến một URL như sau:
Route::get('/user/{id}', 'UserController@show');
Trong ví dụ trên, tham số {id} sẽ được truyền vào hàm xử lý UserController@show như một tham số.
Bạn cũng có thể định tuyến với nhiều tham số, ví dụ:
Route::get('/post/{postId}/comment/{commentId}', 'CommentController@show');
Trong ví dụ trên, hai tham số {postId} và {commentId} sẽ được truyền vào hàm xử lý CommentController@show như hai tham số tương ứng.
Bạn cũng có thể đặt ràng buộc cho các tham số, ví dụ:
Route::get('/user/{id}', 'UserController@show')->where('id', '[0-9]+');
Trong ví dụ trên, chúng ta đang yêu cầu rằng tham số id phải là một chuỗi số. Nếu không, Laravel sẽ trả về một lỗi 404.
Sử dụng Route Parameters là một cách linh hoạt và tiện lợi để truyền tham số cho hàm xử lý trong bộ định tuyến của Laravel.
Route Filters - Bộ lọc trong định tuyến
Bộ lọc trong định tuyến (route filters) cho phép bạn thực hiện một số hành động nhất định trước khi xử lý yêu cầu HTTP. Ví dụ, bạn có thể sử dụng bộ lọc để xác thực người dùng, kiểm tra quyền truy cập hoặc lưu trữ thông tin về truy cập trong một bảng ghi lịch sử.
Để tạo một bộ lọc trong Laravel, bạn cần tạo một class mới với một phương thức "handle" và sau đó đăng ký bộ lọc với Laravel. Ví dụ, để tạo một bộ lọc kiểm tra xem người dùng đã đăng nhập hay chưa, bạn có thể sử dụng đoạn mã sau:
class Authenticate { public function handle($request, Closure $next) { if (!Auth::check()) { return redirect('login'); } return $next($request); } }
Sau đó, bạn có thể đăng ký bộ lọc với Laravel bằng cách sử dụng phương thức "middleware" trong class Route:
Route::get('dashboard', ['middleware' => 'auth', function () { // }]);
Bạn cũng có thể đăng ký bộ lọc với toàn bộ nhóm định tuyến bằng cách sử dụng phương thức "middleware" trong class RouteGroup:
Route::group(['middleware' => 'auth'], function () { Route::get('dashboard', function () {
Named Routes – Đặt tên cho bộ lọc định tuyến
Trong Laravel, bạn có thể đặt tên cho bộ lọc định tuyến bằng cách sử dụng từ khóa as trong hàm 'Route::filter.'
Ví dụ:
Route::filter('filterName', function() { // Filter logic here });
Sau đó, bạn có thể sử dụng tên này để áp dụng bộ lọc cho một định tuyến cụ thể bằng cách sử dụng từ khóa 'before' hoặc 'after 'trong hàm 'Route::get' hoặc 'Route::post'.
Ví dụ:
Route::get('/', array('before' => 'filterName', function() { // Route logic here });
Bạn cũng có thể sử dụng tên bộ lọc để áp dụng cho nhiều định tuyến cùng một lúc bằng cách sử dụng từ khóa before hoặc after trong hàm 'Route::group'.
Ví dụ:
Route::group(array('before' => 'filterName'), function() { Route::get('/', function() { // Route logic here }); Route::get('user/profile', function() { // Route logic here }); });
Route Groups – Nhóm bộ định tuyến
Trong Laravel, bạn có thể nhóm các định tuyến cùng một với nhau bằng cách sử dụng hàm 'Route::group'. Việc nhóm các định tuyến cùng một sẽ giúp bạn giảm thiểu việc lặp lại các phần tử giống nhau khi định nghĩa các định tuyến, và giúp cho mã của bạn trở nên sạch sẽ hơn.
Ví dụ:
Route::group(array('prefix' => 'admin'), function() { Route::get('users', function() { // Route logic here }); Route::get('posts', function() { // Route logic here }); });'
Trong ví dụ trên, tất cả các định tuyến trong nhóm sẽ có tiền tố '/admin' trước. Do đó, địa chỉ của '/users' sẽ là '/admin/users', và địa chỉ của '/posts' sẽ là '/admin/posts'.
Bạn cũng có thể áp dụng các bộ lọc định tuyến, các tham số định tuyến, và nhiều tùy chọn khác cho một nhóm định tuyến bằng cách truyền chúng vào hàm 'Route::group' như là tham số mảng.
Ví dụ:
Route::group(array('before' => 'auth', 'prefix' => 'admin'), function() { Route::get('users', function() { // Route logic here }); Route::get('posts', function() { // Route logic here }); });
Bạn có thể sử dụng nhiều nhóm định tuyến trong một ứng dụng Laravel của bạn, và bạn có thể gắn nhóm định tuyến vào nhau để tạo ra cấu trúc định tuyến phức tạp.
Tổ chức các nhóm định tuyến cho phù hợp với cấu trúc dự án của bạn có thể giúp cho việc quản lý và bảo trì mã của bạn trở nên dễ dàng hơn, và giúp cho việc tìm kiếm và sửa lỗi trong mã trở nên nhanh chóng hơn.
Route Prefixing – Tiền tố trước bộ định tuyến
Route prefixing là một tính năng trong Laravel cho phép bạn thêm một tiền tố trước các định tuyến. Tiền tố này có thể là một chuỗi của ký tự hoặc một biểu thức chính quy, và sẽ được thêm vào trước các URL của định tuyến.
Ví dụ, nếu bạn có một nhóm định tuyến với tiền tố "admin", tất cả các định tuyến trong nhóm này sẽ có URL bắt đầu bằng "admin/".
Route::prefix('admin')->group(function () { Route::get('users', function () { // Matches The "/admin/users" URL }); Route::get('settings', function () { // Matches The "/admin/settings" URL }); });
Trong ví dụ này, hai định tuyến /users và /settings sẽ có tiền tố admin trước. Vì vậy, URL cho hai định tuyến sẽ là '/admin/users' và '/admin/settings'.
Bạn cũng có thể sử dụng tiền tố trên một định tuyến riêng biệt bằng cách sử dụng hàm prefix trước khi gọi định tuyến:
Route::prefix('admin')->get('users', function () { // Matches The "/admin/users" URL });
Trong ví dụ này, định tuyến '/users' sẽ có tiền tố admin trước, vì vậy URL cho định tuyến sẽ là '/admin/users'.
3. Các bước tạo Route trong Laravel
Mở file "routes/web.php" hoặc "routes/api.php":
Trong Laravel, Route được định nghĩa trong các tập tin routes/web.php hoặc routes/api.php. Bạn có thể tạo Route cho cả web và API trong tập tin web.php hoặc chỉ tạo Route cho API trong tập tin api.php.
Sử dụng hàm Route
Để sử dụng hàm Route trong Laravel, bạn cần sử dụng các phương thức của Route để định tuyến các URL của trang web của bạn. Laravel cung cấp các phương thức sau để định tuyến:
- Route::get($uri, $callback): Định tuyến cho phương thức HTTP GET.
- Route::post($uri, $callback): Định tuyến cho phương thức HTTP POST.
- Route::put($uri, $callback): Định tuyến cho phương thức HTTP PUT.
- Route::patch($uri, $callback): Định tuyến cho phương thức HTTP PATCH.
- Route::delete($uri, $callback): Định tuyến cho phương thức HTTP DELETE.
- Route::options($uri, $callback): Định tuyến cho phương thức HTTP OPTIONS.
Ví dụ:
Route::get('/', function () { return 'Hello World'; });
Trên đây là một ví dụ của việc sử dụng hàm Route trong Laravel để định tuyến URL "/" với một hàm callback trả về chuỗi "Hello World".
Truyền tham số cho hàm Route
Truyền URL mà bạn muốn định tuyến làm tham số đầu tiên, và hàm callback hoặc tên của action trong Controller mà URL sẽ định tuyến đến làm tham số thứ hai.
Ví dụ:
Route::get('/greeting', function () { return 'Hello World'; });
Lưu lại tập tin và chạy trình web:
Lưu lại tập tin routes/web.php hoặc routes/api.php sau khi sửa xong và chạy trình web để kiểm tra kết quả. Nếu tất cả hoạt động đúng, bạn sẽ thấy kết quả trả về từ Route khi truy cập URL tương ứng.
Kết thúc bài viết
Cuối cùng, chúng ta đã hoàn thành một bài viết về cách sử dụng cú pháp và cách sử dụng của bộ định tuyến trong Laravel. Chúng ta đã tìm hiểu về các loại định tuyến cơ bản như GET, POST, PUT, DELETE và cách sử dụng các định tuyến đặt tên, nhóm định tuyến và tiền tố.
Bằng cách sử dụng các tính năng này, chúng ta có thể tạo ra một hệ thống định tuyến mạnh mẽ và dễ sử dụng cho ứng dụng Laravel của chúng ta. Nếu bạn cần tìm hiểu thêm về các tính năng khác của Laravel, hãy tiếp tục tìm hiểu Laravel tutorials và áp dụng những kiến thức mới để tạo ra những ứng dụng tuyệt vời.