简单检查 Twig 模板中的表单字段是否有错误

发布于 2024-12-27 11:43:28 字数 227 浏览 1 评论 0 原文

在 Twig 模板中,我检查某个字段是否有这样的错误:

{% if form.points.get('errors') is not empty %}

是否有类似的方法:

{% if form.points.hasErrors() %}

做起来更简单?这没什么大区别,但如果我不能做得更容易,为什么不呢?

In Twig template I check if a field has an error like this:

{% if form.points.get('errors') is not empty %}

Is there any method like:

{% if form.points.hasErrors() %}

to do it simpler? It's not a big difference, but if I can't do it easier why not.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

折戟 2025-01-03 11:43:29

如果您使用的 symfony 版本 >= 4,您可以使用此代码检查是否存在错误

{% if form_errors(registrationForm) %}
    <div class="alert alert-danger">        
        {{ form_errors(registrationForm) }}
    </div>
{% endif %}

If you are using symfony version >= 4, you can check errors existence with this code

{% if form_errors(registrationForm) %}
    <div class="alert alert-danger">        
        {{ form_errors(registrationForm) }}
    </div>
{% endif %}
长途伴 2025-01-03 11:43:29

检查表单是否有错误的最简单方法:

{% if not form.vars.errors|length %}

{% endif %}

Symfony 版本 >= 4

The simplest way of checking whether the form has an error:

{% if not form.vars.errors|length %}

{% endif %}

Symfony version >= 4

狂之美人 2025-01-03 11:43:29

这就是我使用的:

 <div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">

This is what i use :

 <div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">
睡美人的小仙女 2025-01-03 11:43:29

由于空数组解析为 false,因此您可以将现有检查缩短为

{% if form.WIDGET_NAME.get('errors') %}

Since an empty array resolves to false, you can shorten your existing check to

{% if form.WIDGET_NAME.get('errors') %}
山田美奈子 2025-01-03 11:43:29

我创建了一个树枝扩展来处理这个问题:
我的扩展

public function hasError($string)
{
    if(strlen($string) > 4)
        return true;
    return false;
}

我在twig中像这样使用它

{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}

i have create a twig extension to handle this:
my extension

public function hasError($string)
{
    if(strlen($string) > 4)
        return true;
    return false;
}

i use it like this in twig

{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}
疏忽 2025-01-03 11:43:29

我遇到了类似的问题,但我的树枝模板中不存在 form.points

我必须获取控制器中的错误数量,然后将其作为变量传递到我的模板中。不过,$form->getErrors() 的行为与您在控制器中的预期不同。请参阅 这个问题 用于正确获取表单错误的函数。

I had a similar problem, but form.points doesn't exist in my twig templates.

I had to get the number of errors in the controller, then pass it into my templates as a variable. $form->getErrors() does not behave as you might expect in your controller though. See this SO question for a function that will get the form errors correctly.

似最初 2025-01-03 11:43:28

我发现更好的方法是使用这种代码

{% if not form.vars.valid %}
<div class="alert alert-error">
    {{ form_errors(form) }}
</div>
{% endif %}

better way I found, is to use this kind of code

{% if not form.vars.valid %}
<div class="alert alert-error">
    {{ form_errors(form) }}
</div>
{% endif %}
一梦等七年七年为一梦 2025-01-03 11:43:28

该方法不存在。我通常会这样做 {% if form.points.vars.errors|length %}

That method does not exist. I typically do {% if form.points.vars.errors|length %}.

‘画卷フ 2025-01-03 11:43:28

您还可以在覆盖字段渲染时检查错误:

{% block field_row %}
{% spaceless %}    
    <div class="control-group {% if errors %}error{% endif %}">
      {{ form_label(form) }}
      <div class="controls">
        {{ form_widget(form) }}        
        {{ form_errors(form) }}        
      </div>
    </div>    
{% endspaceless %}
{% endblock field_row %}

You can also check for errors when overriding field rendering:

{% block field_row %}
{% spaceless %}    
    <div class="control-group {% if errors %}error{% endif %}">
      {{ form_label(form) }}
      <div class="controls">
        {{ form_widget(form) }}        
        {{ form_errors(form) }}        
      </div>
    </div>    
{% endspaceless %}
{% endblock field_row %}
最笨的告白 2025-01-03 11:43:28

对于更深入的形式定制,我做:

<div class="form-group {% if form.MYFORMINPUT.vars.valid==false %}has-error{% endif %}">
//some twisted divs
{{form_label(form.MYFORMINPUT)}}
{{form_widget(form.MYFORMINPUT)}}
</div>

Sf2.5

For deeper form customization I do:

<div class="form-group {% if form.MYFORMINPUT.vars.valid==false %}has-error{% endif %}">
//some twisted divs
{{form_label(form.MYFORMINPUT)}}
{{form_widget(form.MYFORMINPUT)}}
</div>

Sf2.5

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文