3. Single action controller

https://viblo.asia/p/tap-14-controller-laravel-Ljy5VXOkZra

Nếu controller của bạn chỉ làm một hành động nhất định, khó đặt tên phương thức để gọi. Laravel cho phép chúng ta tạo một single action controller với lệnh Artisan:

php artisan make:controller ShowDashboard --invokable

Đây là nội dung của controller ShowDashboard mà chúng ta vừa khởi tạo:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShowDashboard extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        //
    }
}

Chúng ta chỉ cần code xử lý logic trong method __invoke, mình sẽ code thêm để test.

public function __invoke(Request $request)
{
    return 'Dashboard page';
}

Để gọi single action controller trong route thì cũng khá đơn giản, bạn có thể làm như sau:

Route::get('/dashboard', 'ShowDashboard');

Khác với controller thông thường, single action controller đăng ký với cú pháp Namespace\NameSingleActionController, ta không cần phải khai báo method nữa.

Last updated