Моя проблема в следующем. Я использую Sonata Admin с Symfony. В разделе Admin, когда я пытаюсь создать сущность, ничего не появляется, когда я нажимаю кнопку добавления (написано "Ajouter" ):
Я получаю следующую ошибку: Call to a member function getName() on a non-object
в консоли Chrome
Здесь, как моя иерархия сущностей, у меня есть три объекта, которые связаны между собой следующим образом:
Video ---OneToOne--> String ---OneToMany--> LocalizedString
Просто у меня есть одно видео, которое будет иметь название, и этот титул будет переведен. Вот мои сущности:
LocalizedString
OSC\UtilsBundle\Entity\LocalizedString:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\LocalizedStringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
locale:
type: string
length: '20'
content:
type: string
length: 255
manyToOne:
parent:
targetEntity: String
mappedBy: localizedObjects
lifecycleCallbacks: { }
Строка
OSC\UtilsBundle\Entity\String:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\StringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToMany:
localizedObjects:
targetEntity: LocalizedString
mappedBy: parent
cascade: ["persist", "remove"]
lifecycleCallbacks: { }
Видео
OSC\MySportBundle\Entity\Video:
type: entity
table: null
repositoryClass: OSC\MySportBundle\Entity\VideoRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToOne:
title:
targetEntity: OSC\UtilsBundle\Entity\String
cascade: ["persist", "remove"]
lifecycleCallbacks: { }
Итак, я сделал эту структуру, чтобы облегчить редактирование в SonataAdmin. Если через панель управления admin я хочу отредактировать строку, я могу легко отредактировать строку и перевести ее на многие языки (это уже работает).
Однако, когда я пытаюсь сделать это в видеоадминистраторе, кажется, что я не могу выполнить встроенное редактирование (нажатие кнопки добавления не работает) объекта String.
Здесь соответствующий код в классе видео admin:
$formMapper
->add('title', 'sonata_type_admin', array('delete' => false, 'btn_add' =>false), array(
'edit' => 'inline',
'inline' => 'table',
));
Из того, что я нашел, похоже, что две измененные формы невозможны? Есть ли способ обойти это ограничение? Или, может быть, это мой дизайн, который не слишком хорош?
Edit1: похоже, что на github есть патч: https://github.com/sonata-project/SonataAdminBundle/pull/1971#issuecomment-58023124
Если кто-то знает, как я могу его использовать, я был бы признателен.