
Request ของ Laravel คือ HTTP Request ที่รับข้อมูลจาก Client มาเพื่อส่งไปให้กับตัว SERVER ตัวอย่างเช่นผู้ใช้ทำการกรอกข้อมูลสมาชิกผ่านฟอร์ม แล้วกด Submit ตอนกด Submit แล้วข้อมูลพวกนี้จะเรียกว่า Request นั้นเอง แล้วข้อมูล Request เหล่านี้จะถูกส่งมาที่ Controller สำหรับบทความเนื้อหานี้จะมาแนะนำการใช้งาน และอธิบายให้ผู้อ่านได้เข้าใจง่ายๆและเห็นภาพชัดเจน
การนำมาใช้งาน
จากการที่ยกตัวอย่างคือเมื่อเรา กรอกข้อมูลฟอร์มสมาชิกแล้วกด submit แล้ว เราต้องการส่งข้อมูลไปยัง controller ที่มี Method ชื่อว่า store() เราจะเขียนโค๊ดตามตัวอย่างด้านล่างนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $name = $request->input('name'); $age = $request->input('age'); } } |
จากตัวอย่างโค๊ดด้านบน นั้น เรามีการส่งค่า name, age จากฟอร์มสมาชิก มาที่ controller > method store การรับค่าให้เราใช้ dependency injection ที่ชื่อว่า Request
และ Request เราต้องเรียกใช้ก่อน โดยใช้คำสั่ง use Illuminate\Http\Request
การใช้งาน Request พร้อมกับ parameter
หากเราต้องการส่งค่า Request และ Parameter ไปที่ Controller มาพร้อมกัน เราต้องใส่ Request ไปก่อนแล้วถึงใส่ Parameter ตามไป ลองดูโค๊ดตัวอย่างด้านล่าง
กำหนดเส้นทาง routes/web.php
1 |
Route::put('user/{id}', 'UserController@update'); |
เขียนโค๊ดใน controller ตามด้านล่างนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function update(Request $request, $id) { $name = $request->input('name'); $age = $request->input('age'); // get id use $id } } |
การใช้ Request รับข้อมูลแบบ Dynamic
เราสามารถรับข้อมูลแบบ Dynamic ได้เช่น ปกติเรารับข้อมูลจากฟอร์มเราใช้ $request->input(‘name’) แต่เราสามารถรับแบบ $request->name ก็ได้
การใช้ Request รับข้อมูลแบบ Old Input
ในบางครั้งเรากด submit แล้วข้อมูลที่ส่งไปให้กับ server ตรวจสอบแล้วมีข้อมูลซ้ำ หรือไม่ผ่านการตรวจสอบจาก server เราจะให้กลับไปกรอกใหม่ ดังนั้นเมื่อกลับไปกรอกข้อมูลใหม่ กลับพบว่าข้อมูลฟอร์มที่เรากรอกๆ ไปนั้นได้หายไป ดังนั้น laravel มีคำสั่ง old input ให้ใช้ โดยตอนที่เรากด submit ไปที่ Controller ให้เราใช้โค๊ด
1 |
$request->flash(); |
เพื่อเก็บค่าตัวแปรไว้ชั่วคราว และเมื่อเกิด error มีการกลับไปหน้าฟอร์มเดิม ให้เรานำ old input มาใช้โดยใช้คำสั่งจากตัวอย่างด้านล่าง แบบนี้ใน blade view
1 2 |
<input name="name" value="{{ old('name') }}"/> <input name="age" value="{{ old('age') }}"/> |
กรณีเราไม่ต้องการเก็บตัวแปรไว้ เราสามารถยกเว้นได้ โดยเราเขียนคำสั่งใน Laravel Controller แบบนี้
1 |
$request->flashExcept('password'); |
หรือหากต้องการเก็บตัวแปรชั่วคราวบางตัวแปร สามารถเขียนคำสั่งใน Laravel Controller แบบนี้
1 |
$request->flashOnly(['username', 'email']); |
สรุป
สำหรับบทความนี้ก็จบการนำเสนอในเรื่องของการรับข้อมูลจากฟอร์ม เพื่อส่งมาที่ Controller ว่าทำอย่างไรรับอย่างไร หากมีข้อสงสัย เพิ่มเติมสามารถเขียนคอมเม้นมาสอบถามได้ และทางผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์กับหลายๆคนที่เริ่มศึกษา laravel ไม่มากก็น้อย อย่างไรก็อย่าลืมติดตามบทความสอน laravel ในเว็บ itoffside.com ด้วยนะครับ ขอบคุณครับ