2017-03-01 29 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 

希望這有助於!

相關問題