Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 14: การกำหนด Named Route

ใน Laravel สามารถกำหนดชื่อให้กับ Route ที่เรียกว่า Named Route ซึ่งช่วยให้เราสามารถอ้างอิงเส้นทางนั้นๆ โดยใช้ชื่อที่ตั้งไว้แทนที่จะระบุ URL ตรงๆ การใช้ Named Route ช่วยทำให้โค้ดอ่านง่ายและเป็นระบบมากขึ้น โดยเฉพาะอย่างยิ่งในแอปพลิเคชันขนาดใหญ่ที่มีการเปลี่ยนแปลงโครงสร้าง URL บ่อยครั้ง นอกจากนี้ยังช่วยให้การสร้างลิงก์ (URL) เป็นไปได้ง่ายและสะดวกในกรณีที่เส้นทางมีพารามิเตอร์

การกำหนด Named Route

เราสามารถกำหนดชื่อให้กับ Route ได้โดยใช้คำสั่ง name() หลังการกำหนดเส้นทาง ตัวอย่างเช่น:

use App\Http\Controllers\UserController;

Route::get('/profile', [UserController::class, 'showProfile'])->name('profile');

ในตัวอย่างนี้ เส้นทาง /profile ถูกกำหนดชื่อเป็น profile ดังนั้นเราสามารถใช้ชื่อ profile แทนการอ้างอิง URL /profile ได้ ซึ่งทำให้โค้ดอ่านง่ายและปรับเปลี่ยนได้ง่าย

การใช้งาน Named Route

หลังจากกำหนดชื่อให้กับ Route แล้ว เราสามารถอ้างอิงชื่อ Route นี้ในหลายๆ ส่วนของ Laravel ได้ เช่น:

  1. การสร้าง URL ด้วยชื่อ Route
$url = route('profile');

ในตัวอย่างนี้ เราใช้ฟังก์ชัน route('profile') เพื่อสร้าง URL สำหรับเส้นทาง profile ซึ่งจะคืนค่า /profile

2.การสร้างลิงก์ด้วยชื่อ Route ใน Blade Template

<a href="{{ route('profile') }}">Profile</a>

ใน Blade Template เราสามารถใช้ฟังก์ชัน route() เพื่อสร้างลิงก์ไปยังเส้นทาง profile ได้โดยง่าย

Named Route ที่มีพารามิเตอร์

หากเส้นทางมีพารามิเตอร์ เราสามารถส่งค่าไปยังฟังก์ชัน route() ได้โดยกำหนดค่าพารามิเตอร์ในรูปแบบอาร์เรย์

Route::get('/user/{id}', [UserController::class, 'show'])->name('user.show');

สามารถสร้าง URL สำหรับเส้นทางที่มีพารามิเตอร์ id ได้ดังนี้:


ใน Blade Template:

<a href="{{ route('user.show', ['id' => 1]) }}">View User</a>

ตัวอย่างการใช้งาน Named Route

  1. กำหนด Named Route สำหรับการแสดงผล Profile
Route::get('/profile', [UserController::class, 'showProfile'])->name('profile');

2.การสร้างลิงก์ใน Blade Template

<a href="{{ route('profile') }}">Profile</a>

3. การใช้งาน Named Route ที่มีพารามิเตอร์

Route::get('/post/{id}', [PostController::class, 'show'])->name('post.show');
$url = route('post.show', ['id' => 10]); // URL จะเป็น /post/10

และใน Blade Template:

<a href="{{ route('post.show', ['id' => 10]) }}">View Post</a>

การนำไปใช้งาน

การใช้ Named Route ทำให้การจัดการเส้นทางมีความยืดหยุ่นและมีความสะดวกสบาย โดยเฉพาะเมื่อต้องการอ้างอิง URL ในหลายๆ ส่วนของแอปพลิเคชัน เช่น ในลิงก์, การรีไดเรกต์, หรือการสร้าง URL ที่มีพารามิเตอร์ การใช้ชื่อ Route จะทำให้เราปรับเปลี่ยน URL ได้ง่าย และช่วยลดปัญหาการใช้ URL ตรงๆ ซึ่งอาจทำให้เกิดข้อผิดพลาดได้ง่ายเมื่อต้องปรับเปลี่ยน URL