Il mio problema è il seguente. Sto usando Sonata Admin con Symfony. Nella sezione Amministrazione, quando cerco di creare un'entità, non appare nulla quando si fa clic sul pulsante Aggiungi (farro "Aggiungi"):Come posso eseguire una modifica in linea all'interno di un amministratore annidato?
ottengo il seguente errore: Call to a member function getName() on a non-object
nella console cromata
Ecco come la mia gerarchia di entità è, ho tre oggetti che sono collegati tra loro nel modo seguente:
Video ---OneToOne--> String ---OneToMany--> LocalizedString
Semplicemente, ho un video che avrà un titolo e questo titolo sarà tradotto. Qui sono i miei soggetti:
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: { }
String
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: { }
Video
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: { }
Quindi, Ho fatto questa struttura per facilitare la modifica in SonataAdmin. Se, attraverso la dashboard dell'amministratore, voglio modificare una stringa, posso facilmente modificare una stringa e tradurla in molte lingue (questo già funziona).
Tuttavia, quando provo a farlo nell'amministratore video, sembra che non sia possibile eseguire la modifica in linea (facendo clic sul pulsante Aggiungi non funziona) dell'oggetto String.
Ecco il codice corrispondente in video classe admin:
$formMapper
->add('title', 'sonata_type_admin', array('delete' => false, 'btn_add' =>false), array(
'edit' => 'inline',
'inline' => 'table',
));
Da quello che ho trovato, sembra che due forme Imbricated non è possibile? C'è un modo per aggirare questa restrizione? O forse è il mio design che non è troppo bello?
Edit1: Sembra che ci sia una patch venuta su GitHub: https://github.com/sonata-project/SonataAdminBundle/pull/1971#issuecomment-58023124
Se qualcuno sa come posso usarlo Gradirei.
Basta usare 'sonata_type_model' e passare le relative opzioni per ottenere controlli migliori –
Hai provato ''inline' => 'standard'' con sonata_type_collection invece di sonata_type_admin con'' inline '=>' table''? –
E anche qual è il tuo StringAdmin? –