2017-03-01 90 views
0

我正在调用实体来提供下拉选项。我设置了一个占位符值。我尝试设置数据值,但无论占位符值是否总是选中标记。Symfony实体类型无法设置选择值,占位符被选中

我PostFormType:

公共职能buildForm(FormBuilderInterface $建设者,数组$选项) {

$builder 
     ->add('title', TextType::class, array('attr' => array(
      'class' => 'form-control' 
     ))) 
     ->add('price', TextType::class, array('attr' => array(
      'class' => 'form-control' 
     ))) 
     ->add('artist', EntityType::class, [ 
      'data'=>2, 
      'placeholder'=>'Choose Artist', 
      'class'=>Artist::class, 
      'choice_label'=>'artist', 
      'query_builder'=> function (EntityRepository $er) { 
       return $er->createQueryBuilder('artist') 
        ->orderBy('artist.artist', 'ASC'); 
      }, 

      'empty_data' => null, 
      'attr' => array(
       'class' => 'form-control' 
      ) 
     ]) 

     ->add('userId', HiddenType::class) 
     ->add('description', TextareaType::class, array('attr' => array(
      'class' => 'form-control' 
     ))) 
     ->add('purchaseDate','date') 
     ->add('id',HiddenType::class) 
    ; 
} 

回答

0

你不应该对财产artist配置data如果必须由用户在修改表格。

如果您想设置新实体的默认值。即使你这样做,从UI表单的更改也不会影响,因为data属性会将提交后提供的值重置为2

您始终可以使用相关EntityConstructor来设置任何默认值。

但是,因为artist是引用属性。在构建表单之前,您应该在Controller中执行此操作。

$artist = $em->getRepository("AppBundle:Artist")->find(2); 
$entity->setArtist($artist) 
// Load the form here. The default value automatically set in the form 

希望这有助于!