Laravel 7 : คอนฟิก Routing เบื้องต้น

มาเริ่มต้นหัดใช้ Laravel โดยเริ่มจากทำความเข้าใจการทำ Routing กัน

Routing ใน Laravel ทำหน้าที่แปลงค่า URI ที่มีการเรียกใช้งานแล้วให้โปรแกรมทำอะไรต่อไป โดยเราสามารถกำหนดรูปแบบ (pattern) ของ URI ที่เรียกใช้งานได้หลายรูปแบบ

ดีฟอลต์จากการติดตั้ง Laravel 7 จะมีการทำ Routing อยู่หลายทาง แยกเป็นไฟล์ต่างๆ ที่อยู่ในโฟลเดอร์ routes/

เบื้องต้นเรามาดูไฟล์ routes/web.php ซึ่งทำหน้าที่รอรับการเรียก URI ผ่านหน้าเว็บโดยตรง

ตัวอย่างไฟล์ routes/web.php ที่ได้จากการติดตั้ง

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

จากไฟล์ด้านบน คลาส Route ทำหน้าที่กำหนดการทำ Routing รอรับการเรียกใช้งานผ่านเว็บ HTTP แบบเมธอด get โดยระบุว่าถ้ามีการเรียกงาน URI '/' หรือหน้าเว็บแรกของเว็บไซต์ ให้ไปเรียกใช้งานพารามิเตอร์ที่สอง ซึ่งในที่นี้ถูกกำหนดไว้ในรูปแบบ Closure Function

function () จะรันชุดคำสั่งที่อยู่ใน {} ซึ่งในที่นี้มีแค่คำสั่งให้ส่งกลับค่า return ผลลัพธ์ที่ได้จากการเรียกฟังก์ชัน view()

แก้ไขการ return ในไฟล์ routes/web.php

เริ่มต้นทดลองแก้ไขบรรทัดคำสั่ง return โดยแก้ไขให้ return 'Hello' หรือส่งกลับค่าเป็นคำว่า Hello

ตัวอย่างไฟล์ routes/web.php หลังการแก้ไข (ตัดส่วน comment โปรแกรมออก)

<?php

Route::get('/', function () {
    return 'Hello';
});

ทดสอบใช้คำสั่ง curl เรียกหน้าแรกของเว็บไซต์

$ curl http://blog.test/
Hello

เพิ่ม Route

หากเราต้องการเพิ่ม URI สามารถเพิ่มชุดบรรทัดคำสั่ง Route::get() ในไฟล์ routes/web.php

ตัวอย่างเช่น เราต้องการเพิ่ม URI ว่าถ้ามีการเรียกใช้งาน contact ให้แสดงคำว่า Contact Us

<?php

Route::get('/', function () {
    return 'Hello';
});

Route::get('contact', function () {
    return 'Contact Us';
});

ทดสอบเรียกใช้ contact ด้วยคำสั่ง curl

$ curl http://blog.test/contact
Contact Us

จะสังเกตว่า ถ้าเราเพิ่ม URI ไปเรื่อยๆ ด้วยการเพิ่มในไฟล์ routes/web.php โดยตรง จะทำให้ไฟล์มีขนาดใหญ่ บริหารจัดการได้ยาก

ตอนต่อไปมาดูวิธีการส่งไปให้ Controller ประมวลผล แล้วค่อยส่งค่ากลับมา

ข้อมูลเพิ่มเติม

Laravel Basic Routing