Иногда вам нужен контроллер, без всех ресурсных методов, таких как 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.
