Создайте собственный маршрут на пользовательской странице

Я использую версии Symfony 4.3 и Sonata 3.x.

Я пытаюсь создать собственный маршрут на пользовательской странице, но получаю сообщение об ошибке:

An exception has been thrown during the rendering of a template ("unable to find the route `admin.photocall|admin.photocall_gallery.moderate`")

У меня есть объект X с отношением OneToMany к объекту Y. Объяснение с кодом:

class XAdmin extends AbstractAdmin
{  
    [...]
    protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
    {
        $admin = $this->isChild() ? $this->getParent() : $this;
        $id = $admin->getRequest()->get('id');

        if ($this->isGranted('LIST')) {
            $menu->addChild('Galerie', [
                'uri' => $admin->generateUrl('admin.photocall_gallery.list', ['id' => $id])
            ]);
        }
    }
}

Тогда есть мой YAdmin:

class YAdmin extends AbstractAdmin
{
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper->add('_action', null, [
            'actions' => [
                'clone' => [
                    'template' => 'admin/PhotocallListAdmin/__list_action_moderate.html.twig'
                ]
            ]
        ])
        ;
    }

    protected function configureRoutes(RouteCollection $collection)
    {
        if ($this->isChild()) {
            $collection->clearExcept(['list', 'moderate']);
            $collection->add($collection->getBaseCodeRoute().'.moderate', 'moderate');
            return;
        }
    }
}

Итак, я добавляю действие с шаблоном, который выглядит так:

<a class="btn btn-sm" href="{{ admin.generateObjectUrl('moderate', object) }}">
{% if not object.ismoderate %}
    Moderate
{% else %}
    Undo moderation
{% endif%}
</a>

Итак, ошибка говорит о том, что не удается найти маршрут admin.photocall|admin.photocall_gallery.moderate. Но когда я выгружаю коллекцию $ в YAdmin после добавления умеренного маршрута, у меня есть два элемента:

  • admin.photocall|admin.photocall_gallery.list (текущая страница)

  • admin.photocall|admin.photocall_gallery.moderate

Я искал, но похоже, что никто больше этого не делал.

Спасибо за помощь


person Alexis    schedule 12.04.2019    source источник
comment
Попробуйте это $collection->add('moderate', 'moderate');, затем очистите кеш.   -  person GasKa    schedule 12.04.2019
comment
Хм, я не знаю почему, но это работает... Может быть, очистка кеша была подсказкой, потому что я уже пытался добавить просто умеренный. Спасибо Гаска! Вы можете написать ответ, и я его проверю :)   -  person Alexis    schedule 12.04.2019


Ответы (1)


Пишу комментарий Гаськи, чтобы закрыть этот вопрос.

Я просто должен был добавить:

$collection->add('moderate', 'moderate');, а затем очистить кеш.

Спасибо ему

person Alexis    schedule 09.05.2019