เรียนรู้ Laravel 4.1 เรื่อง ( Route )

laravel_route

หลังจากหายไปศึกษาจากคลิปในเน็ตไม่ค่อยได้อัพเลยจึงจะทยอยอัพเดทกันนะครับ ความรู้ถ้าหากเพื่อนๆคนไหนอยากจะใช้เวอร์ชั่นใหม่ก็ไม่ต่างจากเวอร์ชั่นนี้เท่าไรก็ลองศึกษากันดูครับ เรื่องนี้จะเกี่ยวกับเรื่องการ Route หรือการเปลี่ยนเส้นทางเวลาที่มีการ request เรียกเข้ามายังเว็บเรา ผู้ใช้ Laravel ควรจะเรียนรู้เรื่องนี้เป็นเรื่องแรกครับ

เริ่มต้นกับ Route และการ Install

ให้ทำการลง composer ในเครื่องก่อนครับ composer คือะไร ? คือโปรแกรมจัดการพวกไฟล์ต่างๆเวลาที่เราต้องการ lib หรือไฟล์ code บางอย่างที่ตัวนี้อาจจะต้องการ lib ตัวอื่นอีกการมานั่งจัดการวางไฟล์ไว้ไหน ต้องเรียกไฟล์พวกนี้มาใส่ไว้ไหน ปัญหาเหล่านี้ตัว composer  เกิดมาเพื่อจัดการครับผมไม่อธิบายแล้วกันคิดว่าควรจะเป็นถ้าไม่เป็นบอกใน comment เดี๋ยวจะสอนลงให้นะครับ เมื่อเครื่องเรามี composer ให้เราใช้ command line ใน Terminal สำหรับ mac และ cmd สำหรับ window ครับใส่ตามนี้เลย

เราจะได้โปรเจ็ตมาในตัวอย่างของผมจะสร้างไว้ชื่อว่า laravel เลยง่ายดี หากลงแล้วมีปัญหา ซึ่งคิดว่าน่าจะมีกันทุกคนคือ ไม่มีตัว extension mcrypt จะมี error แบบนี้

แนะนำว่าถ้าใช้พวก MAMP หรือ XAMPP เปิด extension ตัวนี้แล้วก็สั่งให้ตัว PHP มาอ่านครับ ถ้าไม่ได้ก็ google เลยแต่จำได้ว่าปัญหานี้ผมติดอยู่พักใหญ่เหมือนกันแต่อันนี้ไม่ได้จะสอนเรื่องนี้นะครับใครติดอะไรก็ถามเอาใน comment นะครับ

ถ้าทุกอย่างโอเคเข้า localhost/projectname/public ( เดี๋ยวจะบอกว่าวิธีเอา public ออกให้นะไม่ต้องใจร้อน ) ในตัวอย่างของเราคือ localhost/laravel/public ก็จะเจอหน้าแรกของ Laravel เป็นอันเสร็จพิธีลงจ้า

วิธีเอา public ออกจาก url

วิธีแรกให้เราแก้ไขในไฟล์ตอนทำ virtual host ไปอ่านใน public เลยเช่น

วิธีที่สองคือ เอาโค้ดด้านล่างไปใส่ .htaccess ต้องวางใน folder laravel project นะครับเช่นถ้าผมมี folder stock ซึ่งเก็บไฟล์ laravel ไว้ก็สร้าง .htaccess ไว้ใน folder stock ครับโค้ดตามนี้

วิธีที่สามคือ

  • ให้เราสร้าง folder ชื่อ laravelfiles และเอาทุกอย่างไปใส่ในนี้ยกเว้น folder public
  • ให้เราเอาทุกไฟล์ใน public ออกมาไว้ข้างนอกหรือพูดง่ายๆคือ copy ออกมาอยู่ลำดับเดียวกับ public folder ครับ
  • ไปแก้ไขโค้ดในการเรียกให้ถูกต้องโดยมีสองตัวคือ bootstrap/paths.php เปลี่ยน ‘public’ => __DIR__.’/../../’,
  • ไปแก้ไข index.php ซึ่งตอนนี้จะอยู่ที่ root ของ folder project เรา copy มันออกมาจาก public ครับแก้ไขเป็นดังนี้

 

สร้างไฟล์ .htaccess หากมองไม่เห็นแล้ว copy โค้ดตรงนี้ไปครับ

แค่นี้เราก็สามารถเรียกใช้เว็บโดยไม่ต้องมี public แล้วครับ

Routing

ใน Laravel เราต้องสร้าง Code สำหรับการรองรับการ request ต่างๆกันเช่นส่ง url แบบนี้มาเป็น GET ก็ต้องเขียนรับหรือเป็น POST เราก็ต้องเขียนรับครับเรามา  Hello world โดยการเรียกแบบ GET กันดีกว่าครับ เปิดไฟล์ app/route.php ครับแล้วเพิ่มโค้ดดังนี้

แล้วลองเรียก url ดังนี้ครับ

ก็จะเจอคำว่า hello world ครับส่วนแบบ POST ทำคล้ายกันเลยครับแต่เราต้องมีหน้าสำหรับ form input ก่อนครับ หากบางคนนั้นไม่มีตัว extension postman ใน chrome ที่สามารถจำลองการส่งค่าได้ก็ให้สร้างหน้า form ง่ายๆก่อนครับโดย save ไว้ที่ folder views นะครับชื่อว่า input.php ก็ได้ครับโค้ดเป็นตามนี้

แล้วในส่วนของ route.php นั้นใส่โค้ดอย่างนี้ครับ

ถ้าเราเรียก localhost/laravel/public/hello ตอนแรกจะเป็นการเรียกเข้าสู่ get คือเรียก form หน้า input มาครับ code ที่เขียนว่า View::make(‘input’); เหมือนกัน render หน้า html ครับแล้วเมื่อเรากรอกค่าแล้วกด submit หน้าจอจะโชว์ค่าที่ส่งมาคือ name มีค่าเหมือนที่เรากรอกครับ

การกำหนดการรับค่า Parameter ใน url

บ่อยครั้งที่เราต้องการให้ส่งค่าตรงส่วนไหนเป็นอะไร เช่นต้องการเป็น id ก็ต้องเป็นตัวเลขเท่านั้นกรณีอย่างนี้เราสามารถกำหนดได้ครับว่าจะรับค่าแบบไหนถ้าส่งมาไม่ถูกเราก็ส่งเป็นค่า error กลับไปได้ครับ

ใช้ where ในการใส่ Regex  แต่หากเราลองเรียกดูถ้าเราไม่ส่งค่า id จะเกิด error ขึ้นซึ่งเราสามารถกำหนดค่า Default หรือค่าเริ่มแรกไว้ได้ครับโดยการใส่โค้ดแบบนี้

$id=0 จะไม่ทำให้หน้า error

การตั้งชื่อย่อของ Route

บ่อยครั้งเราต้องการอ้างอิงถึง Path เช่น อยากเรียกสั้นๆ ทำได้ดังนี้

ลองเรียนในหน้า View ดูเช่น

echo URL::route(‘board’); ผลที่ได้คือ

www.domainname.com/laravel/blog/board หรือถ้าทำในเครื่องก็จะเป็น localhost/laravel/blog/board

การจัดกลุ่มให้กับ Route

บางครั้งเราต้องการหน้าที่ต้อง Login ก่อนแล้วเราต้องมานั่งเขียนการเช็คต้อง Include ไฟล์ต่างๆมาแต่ใน laravel ทำได้ง่ายครับดังนี้

ให้สร้างไฟล์หน้า index.php, login.php, board.php โดยใส่ echo ‘This is login form.’; ในหน้า login.php ที่เหลือสองไฟล์ปล่อยไว้ไม่ต้องใส่อะไร ถ้าหากทำถูกต้องมันจะแสดงผลหน้า login.php เพียงอย่างเดียวลองเข้า url แบบนี้ดูครับ

localhost/laravel/public/index หรือ localhost/laravel/public/board ดูครับ

การกรองข้อมูลด้วย filter

เมื่อเรากรอกค่าตัวเลขที่ใส่ใน form ถ้าหากค่านั้นเป็นตัวเลขที่ตำ่กว่า 200 เราจะไม่ถูกนำไปหน้าของ post ครับเพราะว่ามีการกรองก่อนที่จะถึงหน้านั้นแล้วทำการหยุดก่อนจะไปถึงหน้า post ครับ

การสร้าง Prefix ให้กับ Route

 

จากปกติเราเข้า url localhost/laravel/public/index ก็จะมี admin นำหน้าถึงจะเข้าได้

localhost/admin/public/index

ก็สามารถสร้างหน้าสำหรับ Admin ได้แหละ

สรุป

เราได้เรียนรู้กันไปสำหรับการ Route ซึ่งจะเป็นพื้นฐานของ framework สมัยใหม่โดยการทำก็ง่ายและยังคงมีอีกหลายแบบให้เราได้ลองเรียนรู้กันต่อครับ ใครมีข้อสงสัยอะไรก็สามารถสอบถามได้ที่ comment หรือจะไปถามในคลิกก็ได้ครับ ผมก็เรียนจากคลิปของ credit ที่แปะไว้แล้วติดตามตอนนี้ไปครับ

Credit

พอดีผมได้ไปศึกษาจากคลิปนี้ https://www.youtube.com/user/laraveltut สามารถเข้าไปติดตามหรือเรียนจากคลิปได้ครับ

แล้วมาเขียนอธิบายเพิ่มเติมครับจึงอยากแชร์ต่อไว้โดยผมจะพยายามเขียนอธิบายคนที่ไม่เคยใช้หรือไม่เข้าใจมาก่อน หากมีคำถามใดๆสามารถเขียน comment ถามไว้ได้เลยครับถ้าผมว่าจะตอบทันที