2012-11-03 18 views
5

Tôi đang cố gắng để thiết lập một kiểu mẫu "sonata_type_immutable_array" như sau:Symfony2 Sonata quản trị datatransformer

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

Và tiết kiệm như thế này:

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

    return $this; 
} 

Nhưng luôn luôn nhận được lỗi:

Lỗi nghiêm trọng bắt được: Đối số 1 được chuyển đến Cổng \ EntradasBundle \ Entity \ Entrada :: setMetadatos() phải là một phiên bản của Portal \ EntradasBundle \ Entity \ EntradaMeta, mảng được gán

Tôi không biết cách đặt bộ chuyển đổi dữ liệu (ArrayToModelTransformer) để đạt được điều này.

Bất cứ ai cũng có thể giúp tôi. Cảm ơn trước!

Trả lời

1

Một biến dữ liệu là khá đơn giản, Nhìn này: http://symfony.com/doc/current/cookbook/form/data_transformers.html

Một biến dữ liệu được sử dụng như thế này:

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

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

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

And then ->addModelTransformer($yourTransformer)) 

Nó được sử dụng để có được id của một đối tượng, và/hoặc lấy đối tượng từ một id.