#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')
;
}
}