คอนโทรลเลอร์และการดำเนินการ
สร้างคอนโทรลเลอร์ด้วย artisan และจัดการคำขอในเมธอดการดำเนินการ
คอนโทรลเลอร์และการดำเนินการ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คอนโทรลเลอร์คืออะไร
คอนโทรลเลอร์จัดกลุ่มตรรกะที่เกี่ยวข้องกับการจัดการคำขอ แทนที่จะใช้คลอสเชอร์ในไฟล์เส้นทาง คุณสามารถมอบหมายงานให้เมธอดของคอนโทรลเลอร์ (การดำเนินการ) ได้
การสร้างคอนโทรลเลอร์
ใช้ Artisan เพื่อสร้างโครงร่างคอนโทรลเลอร์
$ php artisan make:controller UserController
$ php artisan make:controller PostController --resourceคอนโทรลเลอร์พื้นฐาน
คอนโทรลเลอร์สืบทอดจาก Controller และมีเมธอดสาธารณะสำหรับการดำเนินการของแต่ละเส้นทาง
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index(): \Illuminate\View\View
{
$users = User::all();
return view("users.index", compact("users"));
}
}การเข้าถึงคำขอ
ระบุ Illuminate\Http\Request ด้วยคำใบ้ชนิดข้อมูลในเมธอดการดำเนินการ — Laravel จะฉีดออบเจ็กต์นี้ให้โดยอัตโนมัติ
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$name = $request->input("name");
$email = $request->input("email");
User::create(["name" => $name, "email" => $email]);
return redirect()->route("users.index");
}การตรวจสอบข้อมูลแบบฟอร์ม
ใช้ $request->validate() เพื่อตรวจสอบข้อมูลนำเข้า หากไม่ผ่าน Laravel จะเปลี่ยนเส้นทางกลับพร้อมข้อผิดพลาดโดยอัตโนมัติ
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$validated = $request->validate([
"name" => "required|string|max:255",
"email" => "required|email|unique:users",
]);
User::create($validated);
return redirect()->route("users.index");
}เมธอดของคอนโทรลเลอร์ทรัพยากร
คอนโทรลเลอร์ทรัพยากรมีเมธอดตามแบบแผน 7 เมธอด ได้แก่ index, create, store, show, edit, update, destroy
คอนโทรลเลอร์การดำเนินการเดียว
คอนโทรลเลอร์ที่เรียกใช้งานได้มีเมธอด __invoke() เพียงเมธอดเดียว — เหมาะสำหรับการดำเนินการที่ทำงานเพียงอย่างเดียวโดยเฉพาะ
<?php
class SendWelcomeEmail extends Controller
{
public function __invoke(User $user): void
{
Mail::to($user)->send(new WelcomeMail($user));
}
}
// Route:
Route::post("/users/{user}/welcome", SendWelcomeEmail::class);มิดเดิลแวร์ของคอนโทรลเลอร์
ใช้มิดเดิลแวร์กับการดำเนินการที่ต้องการ โดยใช้เมธอด middleware() ในตัวสร้าง
<?php
public function __construct()
{
$this->middleware("auth")->except(["index", "show"]);
}การฉีดการพึ่งพา
ระบุบริการในพารามิเตอร์ของเมธอดการดำเนินการด้วยคำใบ้ชนิดข้อมูล — Laravel จะค้นหาและสร้างบริการจากคอนเทนเนอร์บริการ
<?php
public function store(Request $request, Mailer $mailer): JsonResponse
{
// $mailer is auto-injected
}การส่งคืนการตอบกลับ
คอนโทรลเลอร์สามารถส่งคืนได้ทั้งมุมมอง การเปลี่ยนเส้นทาง การตอบกลับแบบ JSON และการดาวน์โหลดไฟล์
<?php
return view("users.show", compact("user"));
return redirect()->back()->with("status", "Saved!");
return response()->json($user);
return response()->download(storage_path("report.pdf"));เนมสเปซของคอนโทรลเลอร์
โดยค่าเริ่มต้น คอนโทรลเลอร์ทั้งหมดอยู่ใน App\Http\Controllers ไดเรกทอรีย่อยจะสร้างเนมสเปซย่อย เช่น App\Http\Controllers\Admin\UserController
การทำให้คอนโทรลเลอร์กระชับ
คอนโทรลเลอร์ควรมอบหมายตรรกะทางธุรกิจให้คลาสบริการหรือการดำเนินการ ควรออกแบบให้คอนโทรลเลอร์ทำเพียงการตรวจสอบข้อมูลนำเข้า เรียกใช้บริการ และส่งคืนการตอบกลับ
สรุป
สร้างคอนโทรลเลอร์ด้วย Artisan ระบุ Request และบริการด้วยคำใบ้ชนิดข้อมูลเพื่อให้ฉีดโดยอัตโนมัติ ใช้ validate() สำหรับตรวจสอบข้อมูลนำเข้า และทำให้คอนโทรลเลอร์กระชับด้วยการมอบหมายงานให้บริการ
ตรวจสอบความเข้าใจ
คำสั่ง Artisan ใดใช้สร้างคอนโทรลเลอร์ทรัพยากร
คำถามที่พบบ่อย
บทเรียน “คอนโทรลเลอร์และการดำเนินการ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอนโทรลเลอร์และการดำเนินการ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอนโทรลเลอร์และการดำเนินการ”
สร้างคอนโทรลเลอร์ด้วย artisan และจัดการคำขอในเมธอดการดำเนินการ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “คอนโทรลเลอร์และการดำเนินการ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างโครงการ Laravel
- การกำหนดเส้นทางใน Laravel
- คอนโทรลเลอร์และการดำเนินการ
- เทมเพลตและมุมมอง Blade