在编辑页面为ArrayField输入框添加数组键作为标签
解决方案
要在编辑页面将数组键作为标签显示在文本框旁,你需要自定义ArrayField的编辑模板,具体步骤如下:
1. 创建自定义编辑模板
在Symfony项目的模板目录下(如templates/admin/fields/)新建array_edit.html.twig文件,写入以下内容:
{% block field %} {% for child in form.children %} <div class="mb-3"> <label class="form-label">{{ child.vars.name }}</label> {{ form_widget(child, {'attr': {'class': 'form-control'}}) }} </div> {% endfor %} {% endblock %}
该模板会遍历数组的每个键值对,将数组键作为标签渲染,值对应到文本框中,同时遵循Symfony表单的命名规范,确保提交后能正确映射回原数组。
2. 修改CRUD控制器的字段配置
更新原ArrayField的配置,为编辑页面指定刚创建的模板:
yield ArrayField::new('myArray') ->setFormTypeOption('allow_add', false) ->setFormTypeOption('allow_delete', false) ->setTemplatePath('admin/fields/array.html.twig') // 保留列表页原模板 ->setTemplatePath('admin/fields/array_edit.html.twig', 'edit'); // 编辑页使用新模板
通过setTemplatePath的第二个参数,指定新模板仅在edit(编辑)页面生效,列表页继续使用你之前自定义的模板。
3. 验证效果
清除Symfony缓存后进入编辑页面,就能看到每个文本框旁都显示对应的数组键(如#1、#2)作为标签了。
内容的提问来源于stack exchange,提问作者walruz
相关产品推荐
相关产品推荐

