บันทึกการสร้าง Controller และ View ของ Laravel
จากบทความที่แล้ว ทั้ง 3 บทตามลำดับ
บันทึกขั้นตอนการติดตั้ง Laravel เครื่อง Mac ด้วย Docker แบบ Development Environment
บันทึกขั้นตอนการจัดการฐานข้อมูล laravel ด้วยคำสั่ง artisan
บันทึกการสร้าง pattern authen ด้วย artisan ที่ง่ายมากๆ
ในบทความนี้จะเป็นการสร้าง Controller เพื่อสร้าง Page ต่างๆ ภายในตัวเว็บแอปพลิเคชัน ถ้าได้ลองทำตามจากบทความที่ผ่านมาจะเข้าใจว่าที่มาเป็นอย่างไร ถ้าหลงเข้ามาที่บทความนี้ก่อนแล้วละก็ ย้อนไปอ่านบันทึกแรกก่อนครับ
ฝากกดโฆษณา Google Ads สัก click เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ
ในบทความนี้จะมีการทำอยู่ 5 ขั้นตอนดังนี้
1. สร้าง Controller Class ด้วยคำสั่ง artisan
สร้าง Controller จากคำสั่ง
php artisan make:controller Class_file_name
ให้ใช้คำสั่งนี้ใน conmand line แล้วจะได้ไฟล์ Controller ที่ folder HTTP/Controller/Class_file_name ตามที่เราสร้าง
2. การสร้าง Routing
ไปที่ Folder Route ใน Project แล้วเพิ่ม code ลงไปตามที่เห็นด้านล่าง
argument 1 : /home คือ path
argument 2 : /home คือ Class ที่ได้สร้างจากขั้นตอนที่ 1 และ หลัง @ จะเป็น function ตามในรูปของขั้นตอนที่ 1
method name : name('test'); คือ ฟังก์ชันในการสร้าง group ของ route โดยมี prefix ใน arg ของ method
3. เพิ่ม function เพื่อเรียก View
ถ้ายังไม่ได้เพิ่มตามขั้นตอนที่ 1 ให้เพิ่มตามตัวอย่างได้เลย โดยที่ return method view แล้วมี ชื่อของ layout อยู่ด้านใน
4. สร้าง layout
ไปที่ folder view แล้วสร้าง layout ขึ้นมาแต่มีกฎอยู่ว่าจะต้องตั้งชื่อโดยที่มี pattern ตามนี้
name.blade.php
name คือ ชื่อของ layout
5. อธิบายการเชื่อมโยงของไฟล์ในโครงสร้าง
จากในรูปของขั้นตอนที่ 4 จะเห็นว่าจะมีไฟล์ที่เป็น name.blade.php อยู่ 2 ส่วน คือ ส่วนที่ 1 อยู่ใน folder layouts และอยู่นอก layouts
ใน folder layouts ให้นิยามของ ไฟล์นี้เป็น layout ที่เอาไว้ extends view เพื่อเป็น main view อย่างเช่น สมมติว่าชื่อ mylayout.blade.php
<html>
<head>
<title></title>
</head>
<body>
<h1>main page</h1>
<p>This is a main page</p>
<h2>test page</h1>
@yield('content')
</body>
</html>
ส่วน layout นอก folder จะเป็นการเรียก extends และ เขียน module บางส่วน ตัวอย่างเช่น
จากที่เห็นในส่วนนี้ก็จะไปแสดงที่อยู่ใน mylayout.blade.php
<h1>main page</h1>
<p>This is a main page</p>
<h2>test page</h1>
<h1>this is test home</h1>