Laravel การใช้งาน Routes เบื้องต้น
Laravel เป็น php framework แบบ mvc ซึ่งจุดเด่นของ laravel ในการใช้งานแบบ mvc นั้นก็คือการทำ routing url เพื่อทำการออกแบบและจัดการรับส่งข้อมูลของ web application โดยเราสามารถกำหนดและเขียน routes ได้โดยเขียนในไฟล์ที่อยู่ใน directory app ไฟล์ชื่อว่า routes.php
โดยผมจะทำต่อจาก project ที่ผมได้สร้างไว้เมื่อครั้งก่อน เริ่มต้นติดตั้ง LARAVEL ในการ route url นั้นเราจะต้องออกแบบและกำหนดรูปแบบของ url ให้ดีเพื่อไม่ให้เกิดการสับสนในการจัดการและพัฒนา โดยผมจะทำตัวอย่างเกี่ยวกับข้อมูล class เรียนโดยกำหนดให้ url / เป็นการแสดง class เรียนทั้งหมด และถ้าเป็น /id จะแสดงรายละเอียดของ class เรียนดังตัวอย่างโค้ดด้านล่างครับ
[sourcecode language=”php”]
Route::get(‘/’, function()
{
return “All Classes”;
});
Route::get(‘class/{id}’,function($id){
return “Class #id”;
});
[/sourcecode]
จากตัวอย่าง route อันที่ 2 นั้นจะมี parameter {id} ซึ่งจะ string หรือ int ก็ได้แต่ถ้าหากเราต้องการกำหนดรูปแบบของ parameter ในการส่งผ่านจาก url มาสามารถกำหนดได้จาก regular expression โดยมีตัวอย่างดังนี้
[sourcecode language=”php”]
Route::get(‘class/{id}’,function($id){
return “Class #id”;
})->where(‘id’,'[0-9]+’);
[/sourcecode]
ในการพัฒนา web application หรือ web ด้วย laravel เราเราสามารถใช้ artisan ในการ start app เฉพาะอันที่ต้องการได้ด้วยโดยมีวิธีการดังนี้ ให้เราใช้ command line ไปยัง directory ของ project ที่เราสร้างขึ้นแล้วใช้คำสั่ง
php artisan serve
เมื่อใช้คำสั่งเสร็จก็จะสามารถนั้น app ของเราเป็น app หลักได้เลยไม่ต้อง /ชื่อ project/public_html เมื่อการใช้งานโดยทั่วไป
เมื่อลองเรียกผ่าน url
เมื่อเรียก url ที่ส่ง parameter id ไปในรูปแบบ class/id ก็จะได้ดังรูป
เมื่อกำหนดรูปแบบ parameter id ให้รับได้เฉพาะตัวเลขเท่านั้นเมื่อมีตัวอักษรก็จะแสดงดังรูปหรือถ้าเราเปิด mode debug ก็แสดงข้อความ error
โดยเราสามารถเปิด mode debug ได้การเปลี่ยนที่ไฟล์ app.php ที่อยู่ใน directory app\config โดยเปลี่ยน จาก false เป็น ‘debug’ => true,
นอกจากนี้เรายังสามารถกำหนดได้ว่าหากเกิด exception ต่างๆว่าจะทำอย่างไร โดยกำหนดที่ ไฟล์ global.php ใน directory app\start เช่นใน กรณีไม่พบ url โดยมีโค้ดดังนี้
[sourcecode language=”php”]
App::missing(function($exception){
return Response::make(“Page not found”,404);
});
[/sourcecode]
เมื่อเรากำหนด missing จะได้ผลลัพธ์ดังรูป
นอกจากนี้เรายังสามารถสั่ง redirect ใน Route ได้อีกด้วยโดยที่ผมจะทำการ redirect เมื่อเรียก / ให้ไปทำงานยัง Routes classes โดยมีโค้ดตัวอย่างดังนี้ครับ
[sourcecode language=”php”]
Route::get(‘/’, function()
{
return Redirect::to(‘classes’);
});
Route::get(‘classes’,function(){
return “All Classes”;
});
[/sourcecode]
ต่อไปจะเป็นการใช้งาน view โดยผมจะทำการสร้างไฟล์ info.php ใน directory app/views โดยมี code ดังนี้ครับ
[sourcecode language=”php”]
Thaicoding.net Class Example
Total Class
[/sourcecode]
หลังจากนั้นก็ทำการเขียน Routes โดยให้ url /info มีโค้ดดังนี้
[sourcecode language=”php”]
Route::get(‘info’,function(){
return View::make(‘info’)->with(‘class_total’,100);
});
[/sourcecode]
เมื่อลองเรียกผ่าน url http://localhost:8000/info จะได้ดังรูปครับ
จากโค้ดจะเห็นว่าเราสามารถเรียกใช้ view ด้วยคำสั่ง View::make(‘ชื่อไฟล์’)->with(‘ชื่อ parameter’, ค่าที่กำหนด) ซึ่งมันจะทำการใช้ ไฟลฺ์ view ที่อยู่ใน directory view นั้นเองและในไฟล์ view ที่เราสร้างขึ้นนั้นจะสามารถใช้ชื่อตัวแปรที่เราส่งไปได้ปกติเลยครับ ก็ขอจบบทความไว้แค่นี้เจอกันใหม่ในครั้งหน้าครับ