Изменения маршрутизации при обновлении пакета easyadmin symfony

#symfony #easyadmin

Вопрос:

Я отвечаю за обновление пакета easyadmin в приложении, которое было ранее создано с использованием symfony v4.4.19. Изначально у нас было: easycorp/easyadmin-пакет v2.3.12. Затем мы решили обновить пакет easyadmin до версии v3, поскольку столкнулись с некоторыми проблемами при включении/отключении логического свойства в представлении списка.

Когда я использовал v2 :

  • отладка php bin/консоли:маршрутизатор показал маршрут под названием easyadmin с путем /myworkshop/ .
  • У меня не было ни контроллера приборной панели, ни NecklaceCrudController, у меня просто был контроллер под названием AccessoriesController.php с помощью нескольких действий, таких как действие удаления, которое выполняется, когда пользователь удаляет объект, действие редактирования, когда пользователь редактирует объект, действие поиска … В действии удаления есть такая строка кода:

    return $this->redirect($this->generateUrl('easyadmin', array('action' => 'list', 'entity'=> $this->entity['name'])));

    таким образом, URL-адрес станет чем-то вроде этого /myworkshop/?действие=список и сущность=ожерелье

  • Чтобы открыть простой интерфейс администратора, мне нужно нажать на ссылку меню, ссылка на которую : ->createItem('Visit my workshop', ['route' => 'easyadmin']);
  • Когда я открываю этот интерфейс /ссылки, я получаю список различных объектов в своем приложении, если я выберу один из них, я увижу представление списка и смогу успешно отредактировать один объект, но я не могу включить/отключить логические свойства в представлении списка, как упоминалось ранее.
  • Мы указали /myworkshop вместо /admin в приложении>конфигурация>>routing.yml
 # easy admin
easy_admin_bundle:
    resource: "@myShop/Controller/AccessoriesController.php"
    type:     annotation
    prefix:   /myworkshop```


 - A custom css was successfully employed in : app>config>config.yml
    easy_admin:
    design:
        assets:
            css:
                - 'bundles/css/easyadmin.css


 

Когда я обновился до версии v3:

  • php bin/отладка консоли:маршрутизатор показал маршрут под названием myshop_admin_dashboard_index (который был автоматически сгенерирован) с указанием пути /easyadmin.
  • Контроллер панели мониторинга и NecklaceCrudController были созданы, контроллер панели мониторинга имеет только функции configureCrud() и configureMenuItems (). Последний содержит ссылки yield MenuItem::linkToCrud . Вопрос 1 : В версии 2 ссылки на меню не создавались явно, как здесь, поэтому мне было интересно, как правильно отображался полный список объектов в интерфейсе моего приложения?
  • В DashboardController нет ни функции index (), ни маршрута, ни ссылки, только функции configureCrud() и configureMenuItems ().
  • Я хочу сохранить AccessoriesController.php с его несколькими действиями, но теперь, с новым маршрутом и путем, это полностью игнорируется. Вопрос 2 : Есть ли что-то, что я должен изменить в части generateUrl? может ли кто-нибудь привести мне пример того, чем это станет, если я выберу adminUrlgenerator, как я читал в документации?
  • Маршрут.файл yml остается прежним, однако мой интерфейс easyadmin отображается только при посещении этой ссылки /easyadmin вместо /myworkshop . Вопрос 3: Я хочу сохранить URL-адрес /workshop , что мне следует делать в дополнение к сохранению маршрутизации.yml, как сейчас? Я хотел бы, чтобы мы могли изменить myshop_admin_dashboard_index на easyadmin и /easyadmin на мой /myworkshop, как это было в версии 2, потому что в AccessoriesController есть много частей, которые я использую $this->generateUrl('easyadmin',
  • Вопрос 4: css больше не применим, есть идеи, почему? может быть связано с контроллером доступа, который в настоящее время не принимается во внимание.

Комментарии:

1. Пожалуйста, не размещайте несколько различных постановок проблем в одном вопросе

2. Кроме того, какие части примечаний по обновлению вы прочитали и применили?

Ответ №1:

Ну, вы можете добавить этот index метод в свой контроллер панели мониторинга с аннотацией маршрута, чтобы изменить маршрут

 class DashboardController extends AbstractDashboardController
{
    /**
     * @Route("/myworkshop", name="admin")
     */
    public function index(): Response
    {
        return $this->render('dashboard/index.html.twig');
    }
 

Вы можете добавить любой маршрут в меню easyadmin следующим образом

 class DashboardController extends AbstractDashboardController
{
    public function configureMenuItems(): iterable
    {
        yield MenuItem::linktoRoute('Some Route', 'fa fa-info', 'route_name_here');
        #...
    }
}
 

Вы также можете добавить любой файл CSS/js

 class DashboardController extends AbstractDashboardController
{
    public function configureAssets(): Assets
    {
        return Assets::new()
            ->addCssFile('build/admin.css')
            ->addJsFile('build/admin.js')
            ;
    }
}