สอน Laravel : ใช้งาน Controller ร่วมกับ Router
โดยทั่วไปแล้ว Controller คือหัวใจหลักของการทำงานใน PHP MVC Framework เป็นส่วนที่ทำหน้าที่เชื่อมโยง
ข้อมูลระหว่าง view และ model เป็นส่วนของการประมวลผลข้อมูล เช่น ส่งอีเมล สร้างก้อนข้อมูลส่งไปให้ view
แสดงผล สั่งบันทึกลงฐานข้อมูล บันทึกไฟล์ภาพลงบนเซิฟเวอร์ เป็นต้น
จากบทความที่แล้ว สร้าง html form ส่งข้อมูลแบบ POST เราได้ทดสอบส่งข้อมูลแบบ POST และคืนค่าตัวแปรกลับไปใน
ส่วนของ Router เลย ในบทความนี้เราจะเปลี่ยนให้รับค่าเข้ามาทำงานใน Controller แทน แล้วค่อยคืนค่าไปให้ view
เตรียม View และ Router Method
- 1.ให้สร้าง register.blade.php ไว้ที่ resources/views/register.blade.php
สร้าง html form รับค่าจากผู้ใช้งานและส่งค่าตัวแปร name และ _token ส่งไปที่ register Router
<body> <div class="container"> <div class="title">Hello {{{ $name or '' }}}</div> <div class="content"> <form action="register" method="post"> <input type="hidden" name="_token" value="<?php echo csrf_token() ?>"> <input type="text" name="name" value=""> <input type="submit" value="สมัครสมาชิก"> </form> </div> </div> </body>
กำหนดทิศทางของ uri ด้วยให้ค่า default page ทำงานที่ RegisterController เมธอดชื่อว่า index
กำหนดให้เมื่อมีการส่งค่าแบบ POST ใด ๆ มาที่เมธอด register ให้ไปทำงานที่ RegisterController
ในฟังก์ชั่นหรือ Method ชื่อว่า save
Route::get('/',"RegisterController@index"); Route::post('register',"RegisterController@save");
กำหนดให้เมื่อเรียกใช้งาน index Method ให้ทำการคืนค่าโดยการโหลดหน้า register.blade.php
กำหนดให้เมื่อเรียกใช้งาน save Method จะรับค่าตัวแปรแบบ input POST จากนั้นทำการแปลงเป็น array
ก่อนคืนค่าโดยการโหลดหน้า register.blade.php
namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class RegisterController extends Controller { public function index() { return view("register"); } public function save(Request $request) { $name = $request->input('name'); $data = array( 'name' => $name ); return view("register",$data); } }
ใน app/Http/routes.php เป็น Router::any();
Route::any('register',"RegisterController@save");
จากนั้นในไฟล์ register.blade.php เราก็สามารถเปลี่ยน action เป็นแบบ get ได้
<form action="register" method="get">
ในหลาย ๆ บทความที่ผ่านมาเราทำความเข้าใจการใช้งานส่วนของการรับและแสดงผลข้อมูล กำหนด uri ในส่วน
ของ router มาจนถึงในบทความนี้เป็นการใช้งาน controller และ method ในบทความต่อไปเราจะมาลอง
ใช้งาน Laravel framework เพื่อบันทึกข้อมูลที่ได้จาก view ลงฐานข้อมูล โดยใช้ Laravel Model กันครับ