@a0xh

Как использовать атрибуты для маршрутов в Laravel?

Видел в одной статье, что можно использовать атрибуты PHP в качестве маршрутов для Laravel, типа, следующим образом:

<?php declare(strict_types=1);

namespace App\Domain\User\Application\Create;

use App\Infrastructure\Controllers\Controller;
use App\Domain\Role\Infrastructure\RoleRepositoryInterface;

#[Route('/admin/user/create', name: 'admin.user.create', method: 'GET')]
final class CreateUserAction extends Controller
{
    public function __construct(
        private readonly RoleRepositoryInterface $roleRepository,
        private readonly CreateUserResponder $userResponder
    ) {}

    public function __invoke(): \Illuminate\View\View
    {
        return $this->userResponder->handle([
            'roles' => $this->roleRepository->getRoleAll()
        ]);
    }
}


Но у меня в проекте не контроллеры, а экшены и находятся они в разных неймспейсах:

│ └── Domain
│ │ │── Role
│ │ └── User
│ │ │ │── Application
│ │ │ │ │── Create
│ │ │ │ │ │── CreateUserAction.php
│ │ │ │ │ └── CreateUserResponder.php
│ │ │ │ └── Delete
│ │ │ │ │ │── DeleteUserAction.php
│ │ │ │ │ └── DeleteUserResponder.php
│ │ │ │ └── Edit
│ │ │ │ │ │── EditUserAction.php
│ │ │ │ │ └── EditUserResponder.php
│ │ │ │ └── Index
│ │ │ │ │ │── IndexUserAction.php
│ │ │ │ │ └── IndexUserResponder.php
│ │ │ │ └── Show
│ │ │ │ │ │── ShowUserAction.php
│ │ │ │ │ └── ShowUserResponder.php
│ │ │ │ └── Store
│ │ │ │ │ │── StoreUserAction.php
│ │ │ │ │ └── StoreUserResponder.php
│ │ │ │ └── Update
│ │ │ │ │ │── UpdateUserAction.php
│ │ │ │ │ └── UpdateUserResponder.php


Можно ли как-то организовать так, чтобы маршрутизация была через атрибуты с подобной структурой проекта, чтобы отказаться от маршрутизации в файле web.php?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
vhood
@vhood
Не забывайте отмечать решения
Через пакет какой-нибудь, например
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы