如何将Symfony表单EntityType的实体选项放入自定义Optgroup?
解决Symfony EntityType表单选项放入自定义
嘿,要把实体类的选项全部放到你指定标签的<optgroup>里其实很简单,Symfony的EntityType组件已经提供了对应的配置项,只需要用group_by回调函数就能实现:
修改后的表单代码
$form = $this->createFormBuilder() ->add('type', EntityType::class, [ 'required' => true, 'class' => 'AppBundle:Types', 'choice_label' => 'name', 'empty_value' => 'Type', // 用回调函数统一指定分组标签 'group_by' => function($typeEntity) { return 'What is the Type?'; }, ]) ->getForm();
原理说明
group_by参数可以接受两种类型的值:
- 实体类的属性名(比如如果你的
Types实体有category字段,可以直接写'group_by' => 'category'来按字段分组) - 回调函数:每个实体对象会被传入这个函数,函数返回的字符串就是该选项所属的
<optgroup>标签
因为你需要把所有选项都放到同一个固定标签的分组里,所以用回调函数返回固定字符串是最直接的方式。这样渲染出来的HTML会自动把所有<option>包裹在<optgroup label="What is the Type?">标签内,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Teshan N.
相关产品推荐
相关产品推荐

