我有一个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来设置这个字段,或者是传递我想要设置字段的实体实例的唯一方法?
答案 0 :(得分:2)
你可以使用变换器,也可以使用“choice”字段而不是“entity”,并注入一个对象来提供选择列表(可能是存储库)。
我个人认为你会发现变压器方法更容易。结果代码也会更好