โดยเข้าไปจัดการในไฟล์ routes/web.php
ซึ่งรับค่าที่ส่งผ่าน HTTP verbs ได้หลายแบบ
1 2 3 4 5 6 |
Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback); |
หรือเลือกรับค่าที่ส่งผ่านหลายๆ HTTP verbs.
1 2 3 |
Route::match(['get', 'post'], '/', function () { // }); |
หรือรับค่าที่ส่งมาทั้งหมด (All HTTP verbs )
1 2 3 |
Route::any('foo', function () { // }); |
ในฟอร์มที่ส่งค่าผ่าน method POST
, PUT
, หรือ DELETE
ให้ใส่ CSRF token field ในฟอร์มด้วยไม่เช่นนั้นค่าที่ส่งไปจะถูกปฏิเสธ
1 2 3 4 |
<form method="POST" action="/profile"> @csrf ... </form> |
ตัวอย่างที่1
1 2 3 |
Route::get('user/{id}', function ($id) { return 'User '.$id; }); |
จากตัวอย่างด้านบน หากเข้าผ่าน http://domain.com/user/1 จะแสดงค่า User 1
ตัวอย่างที่ 2
1 2 3 |
Route::get('posts/{post_}/comments/{comment}', function ($postId, $commentId) { // }); |
ค่า พารามิเตอร์ จะอยู่ใน {} ห้ามใช้ – แต่ให้ใช้ _ ได้
ตัวอย่งที่ 3
1 2 3 |
Route::get('user/{name?}', function ($name = null) { return $name; }); |
หากไม่มี พารามิเตอร์ {name} ส่งค่ามาให้ $name = null
ตัวอย่างที่ 4
1 2 3 4 5 6 7 8 9 10 11 |
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]+']); |
สามารถกำหนด format ของ พารามิเตอร์ได้ เช่น ให้ส่งมาได้เฉพาะตัวเลขเท่านั้น เป็นต้น
ตัวอย่างที่ 5
หากต้องการกำหนด format ที่ใช้ ให้กับ พารามิเตอร์ที่กำหนด อาจใช้วิธีกำหนดใน boot
method of your RouteServiceProvider
โดยเข้าไปอัพเดทที่ไฟล์ app/Providers/RouteServiceProvider.php
1 2 3 4 5 6 7 8 9 10 11 |
/** * Define your route model bindings, pattern filters, etc. * * @return void */ public function boot() { Route::pattern('id', '[0-9]+'); parent::boot(); } |
จากนั้นหากเราใช้งาน Routing
1 2 3 |
Route::get('user/{id}', function ($id) { // Only executed if {id} is numeric... }); |
ค่า id ที่ส่งผ่านมาจะได้เฉพาะตัวเลขเท่านั้น
1 2 3 |
Route::get('user/profile', function () { // })->name('profile'); |
กำหนด Controller ด้วย
1 |
Route::get('user/profile', 'UserProfileController@show')->name('profile'); |
ตัวอย่าง การแสดง Url ของ Route กับการ Redirect
1 2 3 4 5 |
// Generating URLs... $url = route('profile'); // Generating Redirects... return redirect()->route('profile'); |
ตัวอย่าง การส่งค่า พารามิเตอร์
1 2 3 4 5 |
Route::get('user/{id}/profile', function ($id) { // })->name('profile'); $url = route('profile', ['id' => 1]); |
สามารถส่งค่าพารามิเตอร์เพิ่มเติมได้
1 2 3 4 5 6 7 |
Route::get('user/{id}/profile', function ($id) { // })->name('profile'); $url = route('profile', ['id' => 1, 'photos' => 'yes']); // /user/1/profile?photos=yes |
เป็นกลไกที่สะดวกในการกรองคำขอ HTTP ที่เข้าสู่แอปพลิเคชันของคุณ
อย่างเช่น Laravel มีมิดเดิ้ลแวร์ที่ยืนยันว่าผู้ใช้แอปพลิเคชันของคุณได้รับการตรวจสอบสิทธิ์ หากผู้ใช้ไม่ได้รับการรับรองความถูกต้องมิดเดิลแวร์จะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าจอการเข้าสู่ระบบ เป็นต้น
1 2 3 4 5 6 7 8 9 |
Route::middleware(['first', 'second'])->group(function () { Route::get('/', function () { // Uses first & second Middleware }); Route::get('user/profile', function () { // Uses first & second Middleware }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 |
//USER SECTION ตรวจสอบการล็อกอินก่อน Route::middleware(['auth'])->group(function () { //First Page Route::get('/', 'HomeController@index')->name('home'); /*Resource Controller https://laravel.com/docs/7.x/controllers#resource-controllers*/ Route::resources([ 'user' => 'UserController' ]); }); // |
ดูเพิ่มเติม https://laravel.com/docs/master/routing
ป้ายกำกับ:laravel, Routing, การใช้งาน Routing