Symfony2设置默认选择字段选择 [英] Symfony2 Setting a default choice field selection
问题描述
$ form = $ this-> createFormBuilder($ breed)
- > add('species','entity',array(
'class'=>'BFPEduBundle:Item',
'property'=>'name',
'query_builder'=> function(ItemRepository $ er){
return $ er-> createQueryBuilder('i')
- > where(i.type ='species' )
- > orderBy('i.name','ASC');
)))
- > add('breed','text',array('required' => true))
- > add('size','textarea',array('required'=> false))
- > getForm()
如何设置物种列表框的默认值?
感谢您的回应,我的歉意e,我想我应该改述我的问题。一旦我有从模型中检索到的值,如何将该值设置为SELECTED =yes作为物种选择列表中的相应值?
,那么TWIG视图中的选择选项输出将如下所示:
< option value =174selected =yes >狗和LT; /选项>
如果您使用克里斯蒂安的解决方案,您需要将 EntityManager
注入到FormType类中。下面是一个简化的例子:
pre $ class EntityType extends AbstractType {
public function __construct($ em){
$ this-> em = $ em;
$ b $ public function buildForm(FormBuilderInterface $ builder,array $ options){
$ builder
- > add('MyEntity','entity',array (
'class'=>'AcmeDemoBundle:Entity',
'property'=>'name',
'query_builder'=> function(EntityRepository $ er){
return $ er-> createQueryBuilder('e')
- > orderBy('e.name','ASC');
},
'data'=> $ this-> em-> getReference(AcmeDemoBundle:Entity,3)
));
$ / code $ / pre
// ...
$ form = $ this-> createForm(new EntityType($ this-> getDoctrine( ) - > getManager()),$ entity);
...
从 Doctrine Docs :
$ b $
使用EntityManager#getReference($ entityName,$ identifier)方法,您可以获得对已知标识符的实体的引用,而无需从数据库加载该实体。例如,当您希望与具有标识符的实体建立关联时,此功能非常有用。
I am creating a form in the following manner:
$form = $this->createFormBuilder($breed)
->add('species', 'entity', array(
'class' => 'BFPEduBundle:Item',
'property' => 'name',
'query_builder' => function(ItemRepository $er){
return $er->createQueryBuilder('i')
->where("i.type = 'species'")
->orderBy('i.name', 'ASC');
}))
->add('breed', 'text', array('required'=>true))
->add('size', 'textarea', array('required' => false))
->getForm()
How can I set a default value for the species listbox?
Thank you for your response, I apologise, I think I should rephrase my question. Once I have a value that I retrieve from the model, how do I set that value as SELECTED="yes" for the corresponding value in the species choice list?
So, that select option output from the TWIG view would appear like so:
<option value="174" selected="yes">Dog</option>
If you use Cristian's solution, you'll need to inject the EntityManager
into your FormType class. Here is a simplified example:
class EntityType extends AbstractType{
public function __construct($em) {
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options){
$builder
->add('MyEntity', 'entity', array(
'class' => 'AcmeDemoBundle:Entity',
'property' => 'name',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.name', 'ASC');
},
'data' => $this->em->getReference("AcmeDemoBundle:Entity", 3)
));
}
}
And your controller:
// ...
$form = $this->createForm(new EntityType($this->getDoctrine()->getManager()), $entity);
// ...
From Doctrine Docs:
The method EntityManager#getReference($entityName, $identifier) lets you obtain a reference to an entity for which the identifier is known, without loading that entity from the database. This is useful, for example, as a performance enhancement, when you want to establish an association to an entity for which you have the identifier.
这篇关于Symfony2设置默认选择字段选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!