gpt4 book ai didi

php - Symfony 3.4 - form_errors 表单主题不显示

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:07 26 4
gpt4 key购买 nike

编辑:进行一些挖掘,看起来我的问题源于这样一个事实,即我正在创建的表单是基于 FOSUserBundle 的注册表单构建的。为什么这是一个问题?因为虽然他们的 RegistrationController 会在表单无效时抛出 REGISTRATION_FAILURE 事件,但看起来该事件没有监听器。因此,无效状态除了根本不被系统处理之外实际上并没有做任何事情。它甚至不返回表单(有错误)。

我想使用一个相对简单的表单主题,以便在表单顶部的 block 中显示表单错误:

{% form_theme form _self %}

{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<div class="errors pt-2 mb-2">
<ul>
{% for error in errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}

我在表单模板中引用它:

{% form_theme form 'Form/errors.html.twig' %}

然后我尝试用一​​个简单的方式调用它:

{{ form_errors(form) }}

但是,当我故意向我的表单输入提供不正确的数据并尝试提交时,没有出现错误 div。提交失败,因为有 6 个验证错误,但 HTML 源代码中没有显示错误。

查看 documentation ,我认为我做对了,但我显然遗漏了一些东西。

最佳答案

您有两个问题,您必须同时解决这两个问题才能使表单验证正常工作。

第一个问题:

第一个问题是监听器不工作。如果你故意在表单数据中出错并且表单验证没有启动,那么你将永远不会看到 form_errors 模板。您必须查看 FOSUserBundle 的文档。首先,检查您是否正确启用/配置了 validation.yml。其次,检查生成表单的 PHP 类。确保验证标准设置正确。现在,检查表单是否产生错误的最可靠方法是 {{dump(form)}}在 Twig 模板中。它将显示表单的所有数据,包括错误。继续努力,直到你设法看到一些错误。否则无法进行下一步。

第二个问题:

第二个问题是您可能没有包含正确的模板。我无法计算我有多少次遇到同样的问题。您可能有 3 或 4 个包含 <form> 的 html/twig 代码的模板但 Symfony 实际上使用了其中的 1 或 2 个。将您的代码添加到其中的每一个,并确保您的 Twig block 没有被其他表单 block 覆盖。

另请记住,每次更改模板后,您都必须清理应用程序缓存 ( php bin/console cache:clean -e prod ) 和浏览器缓存。你可能做对了一切,该死的缓存正在显示缓存的结果。最后一条建议:使用浏览器开发者工具。您经常会发现很多信息和错误显示在工具的控制台中。

关于php - Symfony 3.4 - form_errors 表单主题不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53861607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com