มาเริ่มต้นหัดใช้ 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 โดยแก้ไขให้ return 'Hello' หรือส่งกลับค่าเป็นคำว่า Hello
ตัวอย่างไฟล์ routes/web.php หลังการแก้ไข (ตัดส่วน comment โปรแกรมออก)
<?php
Route::get('/', function () {
return 'Hello';
});
ทดสอบใช้คำสั่ง curl เรียกหน้าแรกของเว็บไซต์
$ curl http://blog.test/
Hello
หากเราต้องการเพิ่ม 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 ประมวลผล แล้วค่อยส่งค่ากลับมา
