Symfony2 表单生成器实体(未映射)设置值(数据)不起作用
Symfony2 form builder entity (not mapped) setting value (data) not working
我在设置默认值时在表单生成器中遇到问题,我创建了未映射的列表,我想像这样设置默认值:
->add('kuponaiSuppliers', 'entity', array(
'class' => 'CMSBundle:KuponaiUsers',
'label'=> "Supplier:",
'data'=>5,
'query_builder' => function(EntityRepository $er) use ($options) {
return $er->createQueryBuilder('ku')
->select("ku")
->andWhere("ku.delDate is null")
->andWhere("ku.id > 1");
},
'property'=> 'name',
'multiple' => false,
'expanded' => false,
'required' => true,
'mapped' => false
))
但在我看来,它只列出了没有任何选择的选项:
<select id="acme_cmsbundle_kuponaimain_kuponaiSuppliers" name="acme_cmsbundle_kuponaimain[kuponaiSuppliers]">
<option value="2">Supplier 1</option>
<option value="5">Supplier 2</option>
<option value="6">Supplier 3</option>
</select>
我认为数据属性必须设置默认值,但事实并非如此。
树枝代码:
<tr>
<td colspan="3">{{ form_label(form.kuponaiSuppliers) }}{{ form_widget(form.kuponaiSuppliers) }}</td>
</tr>
您需要获取您希望成为默认对象的对象的引用。
'data' => $this->em->getReference("CMSBundle:KuponaiUsers", 5) // 5 will be the default.
$this->em
指向实体管理器。可以是控制器中的 $this->getDoctrine()->getManager()
。
如果您使用的是 FormType class,则必须注入实体管理器。如果您在控制器中创建表单,那么您可以毫无问题地访问实体管理器。
EntityManager#getReference($entityName, $identifier) 方法可让您获取对标识符已知的实体的引用,而无需从数据库中加载该实体。
应该可以。
我在设置默认值时在表单生成器中遇到问题,我创建了未映射的列表,我想像这样设置默认值:
->add('kuponaiSuppliers', 'entity', array(
'class' => 'CMSBundle:KuponaiUsers',
'label'=> "Supplier:",
'data'=>5,
'query_builder' => function(EntityRepository $er) use ($options) {
return $er->createQueryBuilder('ku')
->select("ku")
->andWhere("ku.delDate is null")
->andWhere("ku.id > 1");
},
'property'=> 'name',
'multiple' => false,
'expanded' => false,
'required' => true,
'mapped' => false
))
但在我看来,它只列出了没有任何选择的选项:
<select id="acme_cmsbundle_kuponaimain_kuponaiSuppliers" name="acme_cmsbundle_kuponaimain[kuponaiSuppliers]">
<option value="2">Supplier 1</option>
<option value="5">Supplier 2</option>
<option value="6">Supplier 3</option>
</select>
我认为数据属性必须设置默认值,但事实并非如此。
树枝代码:
<tr>
<td colspan="3">{{ form_label(form.kuponaiSuppliers) }}{{ form_widget(form.kuponaiSuppliers) }}</td>
</tr>
您需要获取您希望成为默认对象的对象的引用。
'data' => $this->em->getReference("CMSBundle:KuponaiUsers", 5) // 5 will be the default.
$this->em
指向实体管理器。可以是控制器中的 $this->getDoctrine()->getManager()
。
如果您使用的是 FormType class,则必须注入实体管理器。如果您在控制器中创建表单,那么您可以毫无问题地访问实体管理器。
EntityManager#getReference($entityName, $identifier) 方法可让您获取对标识符已知的实体的引用,而无需从数据库中加载该实体。
应该可以。