diyorbek / laravel-attribute-routes
Laravel attribute-based route registrar package
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/diyorbek/laravel-attribute-routes
Requires
- php: >=8.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
README
Пакет, позволяющий задавать маршруты (routes) прямо внутри методов контроллера с помощью #[Attribute] для Laravel 9+ и PHP 8+. Вместо объявления маршрутов в routes/web.php, вы можете указывать их напрямую в контроллерах.
🔧 Установка
- Установите через Composer:
composer require diyorbek/laravel-attribute-routes
- Laravel автоматически загрузит
AttributeRouteServiceProvider. Если потребуется — можно добавить его вручную вconfig/app.php:
'providers' => [ ... Diyorbek\AttributeRoutes\AttributeRouteServiceProvider::class, ],
📦 Как это работает?
Маршруты задаются с помощью атрибутов вроде #[Get], #[Post] и т.д. Эти атрибуты автоматически распознаются и регистрируются в системе маршрутизации Laravel.
🧪 Пример использования
1. Пример контроллера Http\Controllers\PostController.php:
<?php namespace App\Http\Controllers; use Diyorbek\AttributeRoutes\Routing\Attributes\Get; use Diyorbek\AttributeRoutes\Routing\Attributes\Post; class PostController extends Controller { #[Get('/posts', name: 'posts.index', middleware: ['web'])] public function index() { return view('posts.index'); } #[Post('/posts', name: 'posts.store', middleware: ['web'])] public function store() { // Сохранение данных } }
✍️ Доступные атрибуты
| Атрибут | Описание |
|---|---|
#[Get(uri)] |
Маршрут с методом GET |
#[Post(uri)] |
Маршрут с методом POST |
#[Put(uri)] |
Маршрут с методом PUT |
#[Parch(uri)] |
Маршрут с методом PATCH |
#[Delete(uri)] |
Маршрут с методом DELETE |
Каждый атрибут может содержать следующие параметры:
#[Get('/url', name: 'route.name', middleware: ['web', 'auth'])]
| Параметр | Описание |
|---|---|
uri |
Адрес маршрута (обязательный) |
name |
Имя маршрута (необязательный) |
middleware |
Список middleware (необязательный) |
⚙️ Дополнительные настройки
Если ваши контроллеры находятся в другой директории, вы можете указать путь вручную в AttributeRouteRegistrar:
(new \Diyorbek\AttributeRoutes\AttributeRouteRegistrar())->registerRoutes(app_path('Custom/Controllers'));
❗ Примечания
- Пакет работает только с PHP 8.0 или выше и Laravel 9+.
- Поддерживаются только
publicметоды контроллеров. - Не требуется регистрировать маршруты в
routes/web.php. Однако, если маршрут работает только черезwebmiddleware, обязательно указывайте его.
🤝 Вклад в развитие
- Сделайте fork репозитория
- Создайте новую ветку
- Внесите изменения
- Отправьте Pull Request
📫 Автор
- Диёрбек (Telegram:
@Diyorbek_tj) - GitHub: github.com/diyorbektj