Rate this post

Laravel Framework giống như các framework PHP tiến bộ khác đều có tính năng Route. Nhưng tại sao Route lại quan trọng? Chúng tôi cần kết nối giữa các hành động của chúng tôi trong mã và địa chỉ URI và các phương thức HTTP. Có lẽ bạn đã quen thuộc nhất với GET và POST, nhưng có một số ứng dụng khác cũng hoạt động với Laravel.

Các bài viết liên quan:

Tất cả các tuyến Laravel được xác định trong các tệp tuyến nằm trong các tuyến thư mục. Theo mặc định, Laravel tạo ra bốn tệp chính với các định nghĩa về các tuyến:

  • Api.php
  • Channel.php
  • Console.php
  • Web.php

Các tệp đó chứa các tuyến cho các lớp khác nhau của ứng dụng Laravel, ví dụ: api.php chứa các tuyến API và web.php chỉ chứa các tuyến web của ứng dụng.

Nếu cần thêm tệp mới, bạn nên đăng ký tệp đó trong app / Providers / RouteServiceProvider.php. Tệp này chịu trách nhiệm tải tất cả các tuyến của ứng dụng.

Bạn có thể tạo một tuyến mới bằng cách sử dụng hàm ẩn danh hay còn gọi là Closure hoặc chuỗi có tên bộ điều khiển và tên hành động được phân tách bằng @ ví dụ: SomeController @ index, trong trường hợp này, phần cuối cùng với chỉ mục là tên hành động và SomeController là bộ điều khiển Tên.

Ngoài ra, bạn nên xác định phương thức HTTP, Laravel hỗ trợ một số phương thức: GET, POST, PUT, PATCH, DELETE và OPTIONS.

Để đăng ký một tuyến web mới, bạn phải thêm mã mới vào tệp tuyến đường / web.php, việc đăng ký tuyến đường GET với Đóng cửa sẽ là:

Route:get('/some-address', function () {
return 'some text';
});

Cùng một tuyến nhưng sử dụng tên bộ điều khiển và tên hành động:

Route::get('/some-address', 'SomeController@index');

Nếu bạn cần xử lý phương thức POST, bạn nên thay đổi phương thức tĩnh get () của lớp Route thành post (), ví dụ:

Route::post('/some-address', 'SomeController@index');

Để xử lý tất cả các phương thức, bạn nên sử dụng phương thức static any ():

Route::any('/some-address', 'SomeController@index');

Hoặc nếu bạn cần xử lý hai hoặc nhiều phương thức HTTP cùng một lúc, chỉ cần sử dụng phương thức tĩnh match ():

Route::match(['get', 'post'], '/some-address', 'SomeController@index');

Laravel hỗ trợ các tuyến với các tham số được truy xuất từ ​​URI, nếu bạn cần nắm bắt một tham số, bạn nên xác định nó bằng cú pháp {some_param}, nhưng Laravel có một số hạn chế với việc đặt tên tham số – bạn không thể sử dụng – trong tên của thay vì sử dụng nó, chỉ cần sử dụng underscore_. Tham số này sẽ được đưa vào Closure hoặc hành động của bộ điều khiển.

Ví dụ về tuyến đường với phương thức C Close and GET với một tham số:

Route::get('/some-address/{some_param}', function ($someParam) {
// Do something with $someParam
});

Tên tham số trong hàm ẩn danh (trong ví dụ này là $ someParam) có thể là bất kỳ, chỉ quan trọng là thứ tự.

Ở trên chúng ta đã làm quen với các thông số bắt buộc, để xác định các thông số tùy chọn bạn chỉ cần thêm vào? sau tên, v.d. {some_param?}. Nếu bạn cố gắng mở ví dụ trên mà không có tham số like / some-address /, bạn sẽ nhận được lỗi không tìm thấy trang 404.

Bạn có thể xác định nhân các tham số trong một dòng {some_param} / {next_param}, trong mã, nó sẽ giống như sau:

Route::get('/some-address/{some_param}/{next_param}', function ($someParam, $nextParam) {
// ...
});

Đôi khi, rất tốt nếu có các ràng buộc bổ sung trong tuyến, ví dụ: tham số chỉ nên chấp nhận số id của một số thực thể, trong Laravel, nó triển khai bằng phương thức where () và biểu thức chính quy:

Route::get('/some-entity-address/{id}', function ($id) {
// ...
})->where('id', '[0-9]+');

Một điều tốt nữa trong các tuyến Laravel là “các tuyến được đặt tên”, chúng thường là nhu cầu nếu bạn cần tạo URL dựa trên tuyến. Nó dễ dàng được thực hiện bởi phương thức name():

Route:get('/some-address', function () {
return 'some text';
})->name('someRoute');

sau đó, bạn có thể gọi hàm route () và lấy URL cho tuyến trên:

$ url = route ('someRoute');

hoặc nếu bạn có tuyến đường với một số tham số:

$ url = route ('someRoute', ['id' => 1]);

Laravel cũng có các nhóm tuyến đường. Bạn có thể tạo chúng bằng phương thức group (). Sẽ rất hữu ích nếu bạn có danh sách các tuyến đường khi được kết nối với cùng một nội dung, ví dụ: hồ sơ người dùng và các tuyến để thao tác nó, bạn chỉ có thể đặt họ vào một nhóm. Bạn có thể dễ dàng gán cho phần mềm trung gian nhóm, không gian tên, tiền tố tuyến đường và cũng có thể thực hiện Route miền phụ.

Ví dụ: chỉ cần sử dụng phương thức prefix (), bạn có thể xác định tiền tố URI ở một nơi:

Route::prefix('user')->group(function () {
Route::get('{id}', function () {
// Return the user by id
});
Route::post('/', function () {
// Create a new user
});
});

Tuyến đầu tiên được đối sánh với URI với id người dùng và GET, ví dụ: / user / 1 và thứ hai – POST yêu cầu đến / người dùng mà không có bất kỳ tham số tuyến đường nào.

Đây chỉ là phần giới thiệu về Route cơ bản trong Laravel. Laravel có một hệ thống Route linh hoạt và dễ sử dụng cho phép người dùng tạo các ứng dụng web hiện đại có thể bảo trì.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now