Các tham số route Laravel

Các tham số Route

Các tham số Route được sử dụng để bắt các giá trị động từ route s URL. Chúng được định
nghĩa bằng cách bao gói tên của tham số trong dấu {}.
Có 2 dạng tham số route: được yêu cầu và tuỳ chọn.
Các tham số Route được yêu cầu
Nếu bạn cần bắt một đoạn của route s URL, bạn có thể định nghĩa một tham số route:

Route::get( ‘user/{id}’ , function ($id) {
return ‘User ‘ .$id;
});
Route::get( ‘user/{id}’ , function ($id) {
return ‘User ‘ .$id;
});

Trong ví dụ trên., {id} là một tham số route và giá trị của nó sẽ được truyền tới hàm liên quan
của route như một đối số. Nên nếu bạn ghé thăm user/1, nó sẽ trả về User 1.
Các tham số Route tuỳ chọn
Bạn có thể tạo một tham số route tuỳ chọn bằng cách gắn một ? vào tên tham số trong định nghĩa route.
Bạn nên định nghĩa một giá trị mặc định cho tham số đó như đối số thứ hai tới hàm liên quan của route.

Route::get( ‘user/{name?}’ , function ($name =
null) {
return $name;
});
Route::get( ‘user/{name?}’ , function ($name =
‘John’ ) {
return $name;
});

Trong ví dụ đầu tiên, nếu bạn không cung cấp giá trị cho {name} , route sẽ trả về null.
Trong ví dụ thứ hai, nếu bạn không cung cấp giá trị cho {name} , nó sẽ trả về John.
Lưu ý: Các tham số tùy chọn luôn nên ở cuối định nghĩa URI của route. Nó sẽ không hoạt động
đúng nếu bạn đặt một tham số tùy chọn ở giữa định nghĩa route.
Bằng cách sử dụng các tham số route, bạn có thể xây dựng các route phản hồi đối với một loạt
các URI khác nhau, cho phép bạn xây dựng các ứng dụng linh hoạt và phức tạp.
Hãy tạo một ví dụ cho cả tham số route bắt buộc và tùy chọn.
Tham số route bắt buộc
Giả sử bạn đang xây dựng một blog và bạn cần một route để hiển thị các bài viết cá nhân.
Bạn có thể thiết lập một tham số route để bắt ID của bài viết:

 

Route::get(‘/post/{id}’, function ($id) {
$post = App\Post::find($id);
return view(‘post’, [‘post’ => $post]);
});

 

Trong ví dụ này, nếu bạn truy cập /post/1, Laravel sẽ thực thi closure và $id sẽ là 1.
Bên trong closure, chúng ta sử dụng $id để lấy bài viết từ cơ sở dữ liệu và sau đó chuyển
đến một view để hiển thị.
Tham số route tùy chọn
Bây giờ, giả sử bạn muốn sửa đổi route để tùy chọn lọc bài viết theo tác giả cụ thể.
Bạn có thể thêm một tham số route tùy chọn cho tên tác giả:

Route::get(‘/post/{id}/{authorName?}’, function ($id, $authorName = null) {
$query = App\Post::query();
$query->where(‘id’, $id);
if ($authorName) {
$query->where(‘author_name’, $authorName);
}
$post = $query->first();
return view(‘post’, [‘post’ => $post]);
});

Trong ví dụ cập nhật này, nếu bạn truy cập /post/1/John, Laravel sẽ thực thi closure với $id
là 1 và $authorName là ‘John’. Sau đó chúng ta sử dụng các giá trị này để lấy bài viết từ cơ
sở dữ liệu. Nếu bạn truy cập /post/1, $authorName sẽ là null bởi vì đó là một tham số tùy chọn,
và chúng ta sẽ không lọc theo tên tác giả.
Nhớ rằng, các đối số closure phải khớp thứ tự với các tham số route. Ở đây $id xuất hiện trước $authorName
cả trong định nghĩa route và closure.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *