Symfony& FOSUserBundle。自定义寄存器模板上的验证错误

时间:2018-01-16 10:09:21

标签: php symfony twig fosuserbundle

我试图解决我的问题:我无法找到定义register_content.html.twig验证错误的位置。

我需要知道如何按照自己的意愿展示错误。现在我的注册表看起来像:

enter image description here

正如您所看到的,有一个丑陋的验证错误。我想更改标签

<div>
 <ul><li> Las dos contraseñas no coinciden. </li></ul> 
</div>

在某处预定义,由另一个预定义。

我已覆盖视图 register_content.html.twig ,我可以显示验证错误,但不会对其进行自定义。

<div>
    {{ form_errors(form.email) }}
    {{ form_errors(form.username) }}
    {{ form_errors(form.plainPassword.first) }}
    {{ form_errors(form.plainPassword.second) }}
</div>

您知道如何自定义验证错误的HTML结构吗?

例如<{1}}中的验证错误如下所示:

enter image description here

有可能因为在login_content.html.twig中定义了验证错误:

login_content.html.twig

3 个答案:

答案 0 :(得分:1)

您必须覆盖默认的symfony表单错误块。 您可以在symfony documentation

中了解如何执行此操作

您可以将此表单主题设置为全局或每个视图,如documentation

所示

例如,如果您想在类Table2的div中显示错误,则可以创建文件create trigger ti_Table2 ON Table2 for insert as begin -- delete rows from table1 delete t1 from ( -- here it get list of name that exceeds 40 rows select i.Name from ( -- get the distinct Name -- inserted contains newly inserted rows select distinct i.Name from inserted i ) i -- join it to Table2 to find no of rows inner join Table2 t2 on i.Name = t2.Name group by i.Name having count(*) >= 40 -- when exceed 40 ) t2 inner join Table1 t1 on t2.Name = t1.Name end

alert alert-danger

并在注册表单中使用此自定义主题,您可以在覆盖文件的顶部调用views/Form/form_errors.html.twig

{% form_theme form _self %}

{# form_errors.html.twig #}
{% block form_errors %}
    {% spaceless %}
        {% if errors|length > 0 %}
        <div class='alert alert-danger'>
            {% for error in errors %}
                <div>{{ error.message }}</div>
            {% endfor %}
        </div>
        {% endif %}
    {% endspaceless %}
{% endblock form_errors %}

答案 1 :(得分:1)

我找到了解决方案。我已更改Twig中{{ form_error }}的{​​{1}}变量。

示例,如果您要自定义电子邮件验证错误:

form.field.vars.errors

改变它:

<div>
    {{ form_errors(form.email) }}
</div>

您可以使用 div 标记或任何您想要的标记。

答案 2 :(得分:0)

您可以使用translation。在parameters.ini set locale中输入您的语言并创建message file。然后在twig模板中使用:

    {% if error %}
        <div class="error">{{ error.message|trans({},'messages') }}</div>
    {% endif %}

另一种解决方案是:

{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }}