2012-11-03 11 views
5

Próbuję ustawić typ postaci "sonata_type_immutable_array" w następujący sposób:Symfony2 Sonata Administrator datatransformer

->add('metadatos', 'sonata_type_immutable_array', array(
    'keys' => array(
        array('Test', 'text', array('required' => false)), 
        array('URL', 'url', array('required' => false)), 
       ) 
      )) 

i oszczędzając w ten sposób:

public function setMetadatos(\Portal\EntradasBundle\Entity\EntradaMeta $metadatos = null) 
{ 
    $this->metadatos = $metadatos; 

    return $this; 
} 

Ale zawsze pojawia się błąd:

Catchable Fatal Error: Argument 1 przekazany do Portal \ EntradasBundle \ Entity \ Entrada :: setMetadatos() musi być instancją Portal \ EntradasBundle \ Entity \ EntradaMeta, tablica podana

Nie wiem, jak ustawić datatransformer (ArrayToModelTransformer), aby osiągnąć ten cel.

Każdy może mi pomóc. Z góry dziękuję!

Odpowiedz

1

Transformator danych jest dość proste, Spójrz na to: http://symfony.com/doc/current/cookbook/form/data_transformers.html

Transformator Dane te są wykorzystywane tak:

/** 
    * @var ObjectManager 
    */ 
    private $om; 

    /** 
    * @param ObjectManager $om 
    */ 
    public function __construct($om) 
    { 
     $this->om = $om; 
    } 

[..] 
$yourTransformer = new YourDataTransformer($this->om); 

And then ->addModelTransformer($yourTransformer)) 

Jest używany, aby uzyskać identyfikator obiektu i/lub pobierz obiekt z id.

Powiązane problemy