EasyAdmin3自定义表单主题提交校验失败不显示错误返回500问题
你遇到的500错误是自定义form块时遗漏了EasyAdmin内置的必要隐藏字段和全局错误渲染逻辑导致的,按以下步骤修复即可:
修复方案
1. 调整Twig模板逻辑
你完全重写了form块,覆盖了EasyAdmin原有的全局错误渲染、上下文隐藏字段输出逻辑,校验失败时系统找不到必要参数就会抛出500错误。调整后的模板代码如下:
{% extends '@EasyAdmin/crud/form_theme.html.twig' %} {% use '@EasyAdmin/symfony-form-themes/bootstrap_5_layout.html.twig' %} {# 全局错误渲染块,放在模板根层级 #} {% block form_errors %} <div class="alert alert-danger"> {{ parent() }} </div> {% endblock %} {% block form %} {{ form_start(form) }} {# 输出全局表单错误 #} {{ form_errors(form) }} <div class="row"> {{ form_row(form.logo) }} {{ form_row(form.phone) }} {{ form_row(form.catchphrase) }} </div> <div class="row"> {{ form_row(form.businessName) }} {{ form_row(form.email) }} {{ form_row(form.website) }} </div> <div class="row"> {{ form_row(form.companyName) }} {{ form_row(form.address) }} {{ form_row(form.linkedin) }} </div> <div class="row"> {{ form_row(form.siren) }} {{ form_row(form.zipcode) }} {{ form_row(form.facebook) }} </div> <div class="row"> {{ form_row(form.legalForm) }} {{ form_row(form.city) }} {{ form_row(form.twitter) }} </div> <div class="row"> {{ form_row(form.description) }} </div> {# 输出所有未手动渲染的隐藏字段,包含EasyAdmin上下文参数、csrf_token等 #} {{ form_rest(form) }} {{ form_end(form) }} {% endblock %}
2. 补充Crud控制器配置
建议补充编辑、新建页面的基础配置,避免上下文参数缺失:
public function configureCrud(Crud $crud): Crud { return $crud ->setPageTitle(Crud::PAGE_INDEX, 'admin.menu.infos') ->setPageTitle(Crud::PAGE_EDIT, '编辑公司信息') ->setPageTitle(Crud::PAGE_NEW, '新增公司信息') ->setFormThemes(['bundles/EasyAdminBundle/crud/company/edit.html.twig']) ; }
可选排查步骤
如果修改后仍有500错误,查看var/log/dev.log中的错误栈,排查是否存在实体属性约束配置错误、表单字段未映射的问题。
内容的提问来源于stack exchange,提问作者Micka Bup
相关产品推荐
相关产品推荐

