使用它的id设置Symfony2实体表单字段

时间:2015-06-19 11:39:02

标签: php forms symfony

我有一个Symfony2未映射的表单,其中包含“实体”类型的字段。这是表单类型定义:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('RegistrationForgotEmailTemplate', 'entity', array(
            'class' => 'EmailBundle:EmailTemplate',
            'placeholder' => '-- Default ---',
        ));
}

这是我构建表单实例的地方:

$data = array('RegistrationForgotEmailTemplate' => 4);
$form = $this->createForm($formType, $data, array(
            'action' => $url,
            'method' => 'POST'
            ));

我的问题是表单没有将RegistrationForgotEmailTemplate字段设置为正确的实体(id 4)。我假设这是因为我提供实体的id而不是它的实例。有没有办法提供实体的id来设置这个字段,或者是传递我想要设置字段的实体实例的唯一方法?

1 个答案:

答案 0 :(得分:2)

你可以使用变换器,也可以使用“choice”字段而不是“entity”,并注入一个对象来提供选择列表(可能是存储库)。

我个人认为你会发现变压器方法更容易。结果代码也会更好