Ссылка на какое-то действие другого CRUD-контроллера

Есть ли способ связать новое действие в контроллере CRUD, созданном с помощью EasyAdmin 4.x , с действием в другом контроллере CRUD, с которым у него есть отношение OneToMany?

class FirstEntityCrudController extends AbstractCrudController
{
...
public function configureActions(Actions $actions): Actions
{
    return $actions
        ->add(Crud::PAGE_INDEX, Action::new('add-second-entity','Add a second entity')
        ->linkToCrudAction(Action::NEW ???)

            )
        ;
    }
}

документы говорят, что я могу использовать:

linkToCrudAction(): to execute some method of the current CRUD controller;

Но, похоже, нет указаний на то, как «выполнить какой-либо метод CRUD-контроллера отличающийся».

Примечание: Есть хитрый способ обойти это, но он не кажется здоровым:

   ->linkToUrl('the url to the desired action')
                

С использованием:

  • PHP 8.1
  • Симфония 5.4
  • EasyAdmin 4.x

Я думаю, вы можете попробовать использовать УрлГенератор с linkToUrl()

Eugene Ruban 11.05.2022 20:46

Спасибо, что указали мне правильное направление, я отвечу.

TRKZI Omar 12.05.2022 01:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
2
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После комментария @Eugne и, как упоминается документы, мы можем сгенерировать URL-адрес для желаемого действия, используя класс AdminUrlGenerator следующим образом:

class FirstEntityCrudController extends AbstractCrudController
{
    private $adminUrlGenerator;

    public function __construct(AdminUrlGenerator $adminUrlGenerator)
    {
        $this->adminUrlGenerator = $adminUrlGenerator;
    }
    ...
    public function configureActions(Actions $actions): Actions
    {
        //The magic happens here
        $url = $this->adminUrlGenerator
            ->setController(SecondEntityCrudController::class)
            ->setAction(Action::NEW)
            ->generateUrl();

        return $actions
            ... 
            ->add(Crud::PAGE_INDEX, Action::new('add-second-entity', 'Add second entity')
                ->linkToUrl($url)
            );
    }
}

Это сработало для меня.

Другие вопросы по теме

Почему метод удаления дает мне неожиданный токен < в JSON в позиции 0?
Передача параметров в модульном тесте, обновление функции в базе данных CRUD Laravel
Удаление всегда первой строки в блестящем приложении CRUD только после добавления предварительных данных
Достаточно ли для работы с Spring Boot, если я знаю, что выполняю операцию CRUD?
Не удалось отправить POST-запрос вложенного многомерного объекта json в PHP, поскольку многомерный json поврежден при преобразовании его в массив
Как получить элементы из вложенного словаря с одинаковым значением, используя фреймворк Python и Bottle?
Symfony EasyAdmin3: переданный аргумент 1 должен быть экземпляром App\Entity
При использовании функции редактирования в контроллере появляется ошибка отсутствия параметра и при проверке с помощью dd {#connection: null #table: null }
Можете ли вы выполнить CRUD в представлении CouchDB?
После публикации Edit() возвращайте Details.cshtml редактируемого элемента, а не Index.cshtml