Symfony2设置默认选择字段选择 [英] Symfony2 Setting a default choice field selection

查看:99
本文介绍了Symfony2设置默认选择字段选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  $ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆