2012-11-03 2 views
5

Ich versuche, ein Formulartyp "sonata_type_immutable_array" wie folgt festzulegen:Symfony2 Sonata Admin datatransformer

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

und Speichern wie folgt aus:

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

    return $this; 
} 

Aber immer erhalten die Fehlermeldung:

Abfangbarer Schwerwiegender Fehler: Argument 1 wurde an Portal \ EntradasBundle \ Entity \ Entrada :: übergeben. SetMetadatos() muss eine Instanz von Portal \ EntradasBundle \ Entity \ EntradaMeta sein, Array

Ich weiß nicht, wie man einen Datatransformer (ArrayToModelTransformer) setzt, um dies zu erreichen.

Jeder kann mir helfen plz. Danke im Voraus!

Antwort

1

Ein Daten Transformator ist ganz einfach, Blick auf diese: http://symfony.com/doc/current/cookbook/form/data_transformers.html

Daten Transformator wie folgt verwendet:

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

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

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

And then ->addModelTransformer($yourTransformer)) 

Es verwendet wird die ID eines Objekts zu erhalten, und/oder Holen Sie das Objekt von einer ID.