forms - 默认选中单选按钮(未映射的 ChoiceType 字段)
问题描述
我正在尝试使用 Symfony 的 FormBuilder 选择默认选择的 ChoiceType 字段的选项之一。
我发现了很多类似的问题,但大多数都是关于映射到实体的字段,这不是我的情况。我发现的其他答案涉及使用“data”或“empty_data”属性,这些似乎都不适合我。
这是我当前的“添加”方法(在我的 FormBuilder 中):
$builder->add('type2', ChoiceType::class, [
'mapped' => false,
'label' => false,
'choices' => [
"Incoming" => ComEntry::INCOMING,
"Outgoing" => ComEntry::OUTGOING,
],
'expanded' => true,
'empty_data' => 'Incoming',
]);
(我也试过了'empty_data' => ComEntry::INCOMING,
。)
呈现表单时,没有选择单选框,我希望默认选择第一个(“传入”)。
提前感谢您的任何回复:-)
编辑:这是我最后使用的(而不是'empty_data' => 'Incoming',
),因为 type2 是类型的子集(类型是位的总和,type2 是位INCOMING
和OUTGOING
位之间的选择)。
'choice_attr' => function($choice, $key, $value) use ($options) {
// If the record is being edited and the user selected "Outgoing" at creation, check the "Outgoing" choice.
if($options['data']->getType() & ComEntry::OUTGOING and $choice == ComEntry::OUTGOING)
return ['checked' => 'checked'];
// Else, check the "Incoming" choice.
elseif($choice == ComEntry::INCOMING)
return ['checked' => 'checked'];
else
return [];
},```
解决方案
您可以尝试以choice_attr
可调用形式使用该选项:
这可以是一个关联数组,其中键与选择键匹配,值是每个选择、可调用或属性路径的属性。
'choice_attr' => function($choice, $key, $value) use ($options) {
// If no value is set mark INCOMING as checked
if (empty($options['data']->type2) && ComEntry::INCOMING == $value) {
return ['checked' => 'checked'];
}
return [];
},
推荐阅读
- python - S3 boto put 后没有文件
- python - python中的KMeans(框架= django)
- asp.net - .net Core 类获取参数并以 json 形式返回
- php - PHP将带有一些(重复)元素的XML转换为Json到Json数组
- java - 在回收视图中,如何通过单击和不单击始终突出显示一个适配器项目
- web-services - 使用弹簧靴无法获得响应 200
- c++ - QMenu 中的 TriState QAction
- typescript - Angular 6 上 sonarqube 和 azure devops 的代码覆盖问题
- amazon-web-services - 如何使用 kops、cluster-autoscaler 调整 K8s 集群大小以动态增加 Masters
- javascript - VueJs条件渲染v-if不工作