阅读(1568) (9)

Laravel 8 单行为控制器

2021-06-24 09:51:26 更新

如果你想要定义一个只处理单个行为的控制器,你可以在控制器中放置一个 __invoke 方法:

<?php

namespace AppHttpControllers;

use AppHttpControllersController;
use AppModelsUser;

class ShowProfile extends Controller
{
    /**
     * 显示指定用户的简介
     *
     * @param  int  $id
     * @return IlluminateViewView
     */
    public function __invoke($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
} 

当注册单个行为控制器的路由时不需要指名方法:

use AppHttpControllersShowProfile;

Route::get('user/{id}', ShowProfile::class); 

你可以通过 Artisan 命令工具里的 make:controller 命令中的 --invokable 选项来生成一个可调用的控制器

php artisan make:controller ShowProfile --invokable 

技巧:可以使用 stub 定制 自定义控制器模板