5

我正在尝试设置表单类型“sonata_type_immutable_array”,如下所示:

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

并像这样保存:

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

    return $this;
}

但总是得到错误:

可捕获的致命错误:传递给 Portal\EntradasBundle\Entity\Entrada::setMetadatos() 的参数 1 必须是 Portal\EntradasBundle\Entity\EntradaMeta 的实例,给定数组

我不知道如何设置数据转换器(ArrayToModelTransformer)来实现这一点。

任何人都可以帮助我。提前致谢!

4

1 回答 1

1

数据转换器非常简单,看这个: http ://symfony.com/doc/current/cookbook/form/data_transformers.html

数据转换器的使用如下:

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

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

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

And then ->addModelTransformer($yourTransformer))

它用于获取对象的 id,和/或从 id 获取对象。

于 2012-11-14T09:04:41.597 回答