มาเริ่มต้นหัดใช้ 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
ประมวลผล แล้วค่อยส่งค่ากลับมา