Laravel 8 单行为控制器
如果你想要定义一个只处理单个行为的控制器,你可以在控制器中放置一个 __invoke
方法:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
class ShowProfile extends Controller
{
/**
* 显示指定用户的简介
*
* @param int $id
* @return \Illuminate\View\View
*/
public function __invoke($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
当注册单个行为控制器的路由时不需要指名方法:
use App\Http\Controllers\ShowProfile;
Route::get('user/{id}', ShowProfile::class);
你可以通过 Artisan 命令工具里的 make:controller
命令中的 --invokable
选项来生成一个可调用的控制器
php artisan make:controller ShowProfile --invokable
技巧:可以使用 stub 定制 自定义控制器模板