我呼叫实体提供下拉选项。我设置了占位符值。我尝试设置数据值,但无论占位符值是否总是标记为选中。
我的PostFormType:
public function buildForm(FormBuilderInterface $ builder,array $ options) {
$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 :(得分:0)
如果必须由表单中的用户修改属性data
,则不应为artist
配置。
如果您要设置新实体的默认值。即使您这样做,UI表单中的更改也不会受到影响,因为data
属性会将值重置为提交后提供的2
。
您始终可以使用相关Constructor
的{{1}}来设置任何默认值。
但是,Entity
是引用的属性。您应该在构建表单之前在artist
中执行此操作。
Controller
希望这有帮助!