Иногда вам нужен контроллер, без всех ресурсных методов, таких как index()
, create()
, store()
и т.д. Просто контроллер, который делает только одну вещь, и вы изводитесь в попытках, как назвать этот метод. Расслабьтесь — есть метод __invoke()
.
Вы можете создать контроллер всего лишь с одним методом __invoke()
:
namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class ProfileController extends Controller { /** * Показать профиль данного пользователя * * @param int $id * @return Response */ public function __invoke($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
Как вы видите, можно даже передать в него параметр.
Чтобы вызвать этот метод просто укажите контроллер в в routes/web.php
:
Route::get('user/{id}', 'ProfileController');
Создавать такие контроллеры можно с помощью artisan-команды:
php artisan make:controller ProfileController --invokable
Автор: Povilas Korop
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.