Ale*_*mia 20 php symfony symfony3.x
我有以下表格:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Friend' => 'friend',
'Guide' => 'guide'
)
));
}
Run Code Online (Sandbox Code Playgroud)
如何在呈现表单时默认选中"朋友"复选框?
Pim*_*Web 18
我认为你应该尝试使用data选项,但只是在你甚至没有在对象中保存数据的情况下,因为它会覆盖它.
重要提示:这对创建操作很有用,但不适用于编辑操作.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Friend' => 'friend',
'Guide' => 'guide'
),
'data' => 'friend'
));
}
Run Code Online (Sandbox Code Playgroud)
提取:
创建表单时,每个字段最初显示表单域对象的相应属性的值(如果对象绑定到表单).如果要覆盖表单的初始值或仅覆盖单个字段,可以在数据选项中设置它
更新如果你需要空的价值:
如下面的答案,替换data为empty_data在任何情况下您需要更新默认值
Rom*_*ert 16
使用empty_data表单字段选项.(不是data因为它会覆盖任何发布的数据,除非你动态设置它).
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => array(
'Friend' => 'friend',
'Guide' => 'guide'
),
'empty_data' => 'friend'
));
}
Run Code Online (Sandbox Code Playgroud)
复杂案例的另一个选择是使用Sf动态表单事件.
如果您不想覆盖某个版本的价值,则可以执行以下操作:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$form->add(
'type',
ChoiceType::class,
[
'expanded' => true,
'multiple' => false,
'choices' => [
'Friend' => 'friend',
'Guide' => 'guide'
],
'data' => $event->getData() ?: 'friend'
]);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31193 次 |
| 最近记录: |