Я работал над пакетом под названием Аннотации маршрутов Laravel, который позволяет вам определять маршруты непосредственно в классах вашего контроллера, используя атрибуты PHP.
Мой оригинальный пост об этом можно найти здесь.
Версия 0.2.0 уже выпущена. 😃
Что нового?
Это весьма важное обновление, поскольку оно предоставляет возможность определять маршруты Resource и Api Resource.
В настоящее время вы можете определить эти маршруты, добавив следующее в файл маршрутов.
use App\Http\Controllers\PhotoController; use App\Http\Controllers\PhotoApiController; Route::resource('photos', PhotoController::class) Route::apiResource('api.photos', PhotoApiController::class);
С помощью этого пакета вы теперь можете определять их в своих классах контроллера.
Минимум, который вам нужен, это следующее в вашем файле маршрутов.
# Load routes from a single controller Route::annotation(UserController::class); # Load routes for all controllers in a directory Route::directory(__DIR__ . '/Controllers');
Ресурсные маршруты
Вы можете настроить маршруты ресурсов, выполнив следующие действия:
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller; use SmashedEgg\LaravelRouteAnnotation\ResourceRoute; #[ResourceRoute(name: 'photos')] class PhotoController extends Controller { public function index() { } public function create() { } public function store() { } public function edit($id) { } public function update() { } public function destroy() { } }
Маршруты ресурсов API
Вы можете настроить маршруты ресурсов API, выполнив следующие действия:
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller; use SmashedEgg\LaravelRouteAnnotation\ResourceRoute; #[ApiPhotoRoute(name: 'api.photos')] class PhotoApiController extends Controller { public function index() { } public function show() { } public function store() { } public function update() { } public function destroy() { } }
Для получения дополнительной информации о пакете лучше всего прочитать документацию на github, которая в ближайшее время будет обновлена и будет более подробной.
Заключение
Итак, вот новые возможности версии 0.2.0. Мне нужно еще немного поработать, прежде чем версия 1 будет готова, но я буду рад любым отзывам и предложениям.