Hệ thống website là một bản đồ thiết lập định tuyến một đường dẫn mạng đến một đoạn mã xử lý (xử lý giao dịch, tạo giao diện). Trong framework Laravel việc thiết lập này hết sức đơn giản.
Cấu trúc của một Route
Route::METHOD('URL', ACTION);
Trong đó METHOD gồm:
Sử dụng Route trong Laravel
Các thư mục chưa route
Route cơ bản
Khai báo route greeting
sẽ trả về chuỗi “Hello World” khi truy cập vào path /
.greeting
use Illuminate\Support\Facades\Route;
Route::get('/greeting', function () {
return 'Hello World';
});
Sử dụng route với controller
Route::routeMethod($uri, [$controllerName, $method]);
Tạo file app/Http/Controllers/GreetingController.php tạo một controller với function greeting()
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class GreetingController extends Controller
{
public function greeting()
{
return "Xin chào";
}
}
Trong file routes/web.php tạo route sử dụng controller GreetingController
<?php
use Illuminate\Support\Facades\Route;
Route::get('greeting', [\App\Http\Controllers\GreetingController::class, 'greet']);
Truyền tham số trong route
Trong Laravel để route có thể nhận tham số (parameter) thì bạn chỉ cần thêm cú pháp {parameter}
vào trong $uri
. ví dụ:
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});
Có thể truyền nhiều tham số vào route. Ví dụ:
Route::get('/posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
Các tùy chọn của parameters
Đôi khi có thể chỉ định một parameter là không bắt buộc, bạn chỉ cần thêm dấu ?
vào sau tên parameter
Route::get('/user/{name?}', function ($name = null) {
return $name;
});
Route::get('/user/{name?}', function ($name = 'John') {
return $name;
});
Các ràng buộc parameters
Bạn muốn định dạng kiểu dữ liệu của parameter bạn có thể sử dụng phương thức where
. Ví dụ:
Route::get('/user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');
Route::get('/user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
Route::get('/user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Một số biểu thức hỗ trợ giúp rút gọn định dạng kiểu dữ liệu parameter
Route::get('/user/{id}/{name}', function ($id, $name) {
//
})->whereNumber('id')->whereAlpha('name');
Route::get('/user/{name}', function ($name) {
//
})->whereAlphaNumeric('name');
Route::get('/user/{id}', function ($id) {
//
})->whereUuid('id');
Nếu request đến không phù hợp với các ràng buộc của route, một phản hồi HTTP 404 sẽ được trả về.
Đặt tên cho route
Đặt tên cho route giúp thuận tiện trong việc tạo các URL hoặc các chuyển hướng. Để gán tên cho route thì bạn chỉ cần sử dụng phương thức name
với cú pháp như sau:
Route::get('/user/profile', function () {
//
})->name('profile');
Cách sử dung route name
Để tạo ra URL qua route name thì bạn sử dụng phương thức route()
với cú pháp sau:
route($name, ['prameter_name1' => 'prameter1', 'prameter_name2' => 'prameter2', ...]);
Ví dụ:
// Generating URLs...
$url = route('profile');
// Generating Redirects...
return redirect()->route('profile');
// Route define parameter
Route::get('/user/{id}/profile', function ($id) {
//
})->name('profile');
$url = route('profile', ['id' => 1]);
Lời kết
Ở bài này chúng ta đã tìm hiểu một số khái niệm trong route. Phần sau mình sẽ giới thiệu tiếp các tính năng khác nữa của Route trong Laravel.
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE