Ошибка Sonata Bundle при настройке дочернего администратора

Я использую Symfony и Sonata Bundle для создания своего интерфейса администратора. У меня есть 3 класса:

  • Ресторан
  • обслуживание
  • RestaurantService

С классами 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')
;
}
}

У кого-нибудь есть идея, откуда могут появиться эти ошибки?

Спасибо!

2

Решение

Ваш RestaurantAdmin класс имеет первый параметр configureSideMenu установить как MenuItemInterface $menu когда это должно быть примером \Knp\Menu\ItemInterface,

Menu часть подсказки типа неверна.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]