Я использую Symfony и Sonata Bundle для создания своего интерфейса администратора. У меня есть 3 класса:
С классами Restaurant и Service, имеющими отношения OneToMany с RestaurantService.
Я пробую RestaurantService как детский администратор в Restaurant, но у меня есть эти ошибки:
ContextErrorException в строке RestaurantAdmin.php 143: Уведомление о времени выполнения: объявление GSG \ AdminBundle \ Admin \ RestaurantAdmin :: configureSideMenu () должно быть совместимо с Sonata \ AdminBundle \ Admin \ Admin :: configureSideMenu (меню Knp \ Menu \ ItemInterface $, $ action, Sonata \ AdminBundle \ Admin \ AdminInterface $ childAdmin = NULL)
а также
FileLoaderLoadException в файле classes.php 13757: Уведомление о времени выполнения: объявление GSG \ AdminBundle \ Admin \ RestaurantAdmin :: configureSideMenu () должно быть совместимо с Sonata \ AdminBundle \ Admin \ Admin :: configureSideMenu (меню Knp \ Menu \ ItemInterface $, $ action, Sonata \ AdminBundle \ Admin \ AdminInterface $ childAdmin = NULL) в / Volumes / Data / ge0ra / www / admin_gsg / app / config /. (который импортируется из "/Volumes/Data/ge0ra/www/admin_gsg/app/config/routing.yml").
Вот мой файл services.yml:
Сервисы: sonata.admin.restaurant: класс: GSG \ AdminBundle \ Admin \ RestaurantAdmin теги: - {name: sonata.admin, manager_type: orm, группа: "Gestion des Restaurants", ярлык: "Restaurants"} аргументы: - ~ - GSG \ AdminBundle \ Entity \ Ресторан - ~ звонки: - [addChild, [@ sonata.admin.restaurantservice]] sonata.admin.service: класс: GSG \ AdminBundle \ Admin \ ServiceAdmin теги: - {name: sonata.admin, manager_type: orm, группа: "Gestion des restaurant", ярлык: "Услуги"} аргументы: - ~ - GSG \ AdminBundle \ Entity \ Service - ~ sonata.admin.restaurantservice: класс: GSG \ AdminBundle \ Admin \ RestaurantServiceAdmin теги: - {name: sonata.admin, manager_type: orm, группа: "Gestion des Restaurants", ярлык: "RestaurantServices"} аргументы: - ~ - GSG \ AdminBundle \ Entity \ РесторанСервис - ~
в моем классе RestaurantAdmin:
защищенная функция configureSideMenu (MenuItemInterface $ menu, $ action, AdminInterface $ childAdmin = null) { if (! $ childAdmin ! in_array ($ action, array ('edit'))) { вернуть; } $ admin = $ this-> isChild ()? $ this-> getParent (): $ this; $ id = $ admin-> getRequest () -> get ('id'); $ Меню-> AddChild ( 'Voir / Editer', массив ('uri' => $ admin-> generateUrl ('edit', array ('id' => $ id))) ); $ Меню-> AddChild ( 'Сервисы', массив ('uri' => $ admin-> generateUrl ('sonata.admin.restaurantservice.list', array ('id' => $ id))) ); }
и мой класс RestaurantServiceAdmin:
Класс RestaurantServiceAdmin расширяет админ { protected $ parentAssociationMapping = 'Restaurant'; // Поля для отображения на формах создания / редактирования защищенная функция configureFormFields (FormMapper $ formMapper) { $ formMapper -> добавить ('service', 'sonata_type_model') ; } // Поля для отображения в формах фильтра защищенная функция configureDatagridFilters (DatagridMapper $ datagridMapper) { } // Поля для отображения в списках защищенная функция configureListFields (ListMapper $ listMapper) { if (! $ this-> isChild ()) $ ListMapper-> addIdentifier ( 'ID') -> addIdentifier ( 'ресторан'); $ listMapper -> добавить ('service', 'sonata_type_model') ; } }
У кого-нибудь есть идея, откуда могут появиться эти ошибки?
Спасибо!
Ваш RestaurantAdmin
класс имеет первый параметр configureSideMenu
установить как MenuItemInterface $menu
когда это должно быть примером \Knp\Menu\ItemInterface
,
Menu
часть подсказки типа неверна.
Других решений пока нет …