ข้ามไปยังเนื้อหาหลัก
itOffside
Onmobile อ่าน 4 นาที

Laravel - EP6 การใช้งาน Controller

Laravel
สอน Laravel

Controller คือหนึ่งในคอนเซปต์ ของ MVC ซึ่งมาจากตัวอักษรย่อ "C" นั้นเอง ซึ่งหน้าที่ของมันคือเป็นส่วนจัดการการ การทำงานของระบบ  ซึ่งจะอยู่ระหว่างกลาง ของ Model และ View สำหรับบทความนี้เรามาเรียนรู้เกี่ยวกับdการสร้าง Controller, Middleware controller, resource controller ใน Laravel กันครับ

การสร้าง Controller

ให้เปิด Command line แล้วพิมพ์คำสั่ง Artisan CLI ตามด้านล่างนี้ครับ

php artisan make:controller BlogController

Laravel จำทำการสร้างไฟล์ Controller มาให้เราเองซึ่งไฟล์จะอยู่ที่ app\Http\Controllers หลังจากนั้นเราเปิดไฟล์ BlogController.php แล้วเราจะเห็นตัวอย่างโค๊ดที่เขียนมาให้แล้ว

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogController extends Controller
{
    //
}

โดยไฟล์จะถูกสร้างไว้ที่ App/Http/Controllers แต่ถ้าเราไม่ต้องการให้มันสร้างผ่าน Artisan command เราสามารถ Create new file เองก็ได้เช่นกันครับ ไม่มีปัญหา

จากนั้นให้ใส่ ฟังก์ชั่น test() ลงไป จะได้เป็น

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogController extends Controller
{
    public function test()
    {
        echo 'Hello world!';
    }
}

จากนั้นเราต้องไปกำหนดเส้นทางให้ชี้มาที่ Controller และ ฟังก์ชั่น test() ที่เราสร้าง โดยไปกำหนดที่ routes/web.php

<?php
Route::get('blog/test', 'BlogController@test');

ลองทดสอบ ดูบน Chrome จะได้ผลลัพธ์ ตามรูปภาพด้านล่าง

จบแล้วการใช้งาน controller ง่ายไหมครับ สำหรับการใช้งาน Controller ใน Laravel

Middleware In Controller

เพิ่มเติมส่วนของการใช้งาน auth midleware ใน Controller ครับ โดยเราสามารถใช้ middleware ได้โดยนำโค๊ดไปใส่ที่ __construct() ลองดูตัวอย่างโค๊ดด้านล่างนี้ครับ

<?php

namespace App\Http\Controllers;

class BlogController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function test()
    {
        echo 'Hello world!';
    }
}

จากตัวอย่างโค๊ดจะสังเกตุเห็นว่า ตอนที่ controller เราจะให้มีการตรวจสอบสิทธิ์ ทุกครั้งก่อนเสมอ

Resource Controllers

เป็นการเขียน Controller ที่มี CRUD (Create, Read, Update, Delete) ครบครัน ด้วยการเขียน routes/web.php เพียงบรรทัดเดียว เท่านั้น อยากให้นึกภาพให้เห็น การที่ Controller เรามีหลายๆ ฟังก์ชั่น เช่น index(), Create(), Show() เราจำเป็นต้องเขียน Routes หลายบรรทัด เช่น

Route::get('index', 'BlogController@index');
Route::get('create', 'BlogController@Create');
Route::get('show', 'BlogController@Show');

แล้วถ้าใน controller มีมากกว่านี้ เราจะทำอย่างไร ดังนั้น Resource Controller จะมาช่วยทำ โดยเราเขียน โค๊ดใน Route เพียงการโค๊ด

Route::resources([
    'blog' => 'BlogController',    
]);

สิ่งที่เราได้จากโค๊ดนี้ เปรียบเสมือนเราเขียน Route แบบนี้ครับ

Route::get('/blog', 'BlogController@index');
Route::get('/blog/create', 'BlogController@create');
Route::get('/blog/{id}', 'BlogController@show');
Route::get('/blog/{id}/edit', 'BlogController@edit');
Route::post('/blog', 'BlogController@store');
Route::put('/blog/{id}', 'BlogController@update');
Route::delete('/blog/{id}', 'BlogController@destroy');
 
คือ Resources จะเตรียมโค๊ดแบบ CRUD มาให้เราเลย ส่วนใน Controller วิธีการสร้างแบบ Resource ให้ generate โค๊ดเอง ทำได้เพียงใช้คำสั่ง
php artisan make:controller BlogController --resource

Artisan command ก็จะ generate ไฟล์พร้อมโค๊ด ที่มีฟังก์ชั่น index(), create(), show($id), edit($id), store($reqeuset), update($reqeust, $id), destroy($id) มาให้เราโดยไม่ต้องพิมพ์ใดๆเลย

ส่วนความหมายแต่ละฟังก์ชั่นมีดังนี้

Verb URI Action Route Name Description
GET /blog index blog.index หน้าแรก
GET /blog/create create blog.create หน้า Create
POST /blog store blog.store ฟังก์ชั่นการ Insert ข้อมูล
GET /blog/{id} show blog.show หน้าแสดงข้อมูลตาม ID
GET /blog/{id}/edit edit blog.edit หน้าแก้ไขข้อมูล
PUT/PATCH /blog/{id} update blog.update ฟังก์ชั่นการ Update ข้อมูล
DELETE /blog/{id} destroy blog.destroy ฟังก์ชั่นการ Delete ข้อมูล

สำหรับบทความนี้ก็จบเพียงเท่านี้หากมีปัญหาหรือคำถามใดๆ สามารถสอบถามได้ทาง comment ด้านล่างนี้เลยครับ

Onmobile

โปรแกรมเมอร์

ความเห็น

ยังไม่มีความเห็น — มาเป็นคนแรกได้เลย

แสดงความเห็น

ไม่แสดงบนหน้าเว็บ

บทความที่เกี่ยวข้อง