[英]Simple check if form field has errors in Twig template
在 Twig 模板中,我检查一个字段是否有这样的错误:
{% if form.points.get('errors') is not empty %}
有没有类似的方法:
{% if form.points.hasErrors() %}
做起来更简单? 这不是一个很大的区别,但如果我不能做得更容易,为什么不呢。
我发现更好的方法是使用这种代码
{% if not form.vars.valid %}
<div class="alert alert-error">
{{ form_errors(form) }}
</div>
{% endif %}
那个方法不存在。 我通常做{% if form.points.vars.errors|length %}
。
您还可以在覆盖字段渲染时检查错误:
{% 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 %}
对于更深入的表单定制,我这样做:
<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
由于空数组解析为 false,您可以将现有检查缩短为
{% if form.WIDGET_NAME.get('errors') %}
这是我使用的:
<div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">
如果您使用的是 symfony 4,则可以使用此代码检查错误是否存在
{% if form_errors(registrationForm) %}
<div class="alert alert-danger">
{{ form_errors(registrationForm) }}
</div>
{% endif %}
检查表单是否有错误的最简单方法:
{% 如果不是 form.vars.errors.valid %} {% endif %}
Symfony 版本 >= 4
正确的代码是(对于Symfony 3.4):
{% if form.vars.errors|length %}
我创建了一个树枝扩展来处理这个:我的扩展
public function hasError($string)
{
if(strlen($string) > 4)
return true;
return false;
}
我在树枝上像这样使用它
{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}
我遇到了类似的问题,但我的树枝模板中不存在form.points
。
我必须获取控制器中的错误数量,然后将其作为变量传递到我的模板中。 $form->getErrors()
行为与您在控制器中的预期不同。 有关将正确获取表单错误的函数,请参阅此 SO 问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.