Symfony2.1 - 使用DataTransformer时,选项"em"不存在

Mik*_*ike 4 data-transfer-objects symfony-2.1

我正在使用这个食谱配方在Symfon 2.1中添加数据转换器,但是我收到以下错误,The option "em" does not exist. Known options are: "attr", "block_name",....

这仍然是将实体管理器发送到表单类型的有效方法吗?

$taskForm = $this->createForm(new TaskType(), $task, array(
    'em' => $this->getDoctrine()->getEntityManager(),
));
Run Code Online (Sandbox Code Playgroud)

小智 9

为了使第一个简单(没有依赖注入)Transformer的cookbook配方工作,您应该添加"em"作为已知选项.您可以使用以下setRequired()方法在表单的类型类(cookbook案例中的TaskType)中添加它:

class TaskType extends AbstractType {
    //...
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {   
        //...other stuff like $resolver->setDefaults(... if you need it

        $resolver->setRequired(array('em'));
    }
}
Run Code Online (Sandbox Code Playgroud)

使用$ resolver-> setDefaults()添加'em'也可以,但在本手册中需要实体管理器,因此使用setRequired()似乎更好.