在Twig模板中,我像这样检查字段是否有错误:
{% if form.points.get('errors') is not empty %}
有没有类似这样的方法:
{% if form.points.hasErrors() %}
要更简单地做这件事?虽然差别不大,但如果我能更轻松地做为何不呢。
在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 %}
{{ form_errors(form.somefield) }}
仍然有效。 - ex3v{% if form.vars.submitted %}
。 - COil此方法不存在。我通常会使用{% if form.points.vars.errors|length %}
。
form.vars.valid
可以正常工作。 - binariouserror_bubbling
为True
,则此解决方案将产生0
。 - BentCoder当覆盖字段渲染时,您还可以检查错误:
{% 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
{% if form_errors(registrationForm) %}
<div class="alert alert-danger">
{{ form_errors(registrationForm) }}
</div>
{% endif %}
{% if not form.vars.errors|length %}
{% endif %}
Symfony版本>=4
<div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">
由于一个空数组被解析为false,你可以缩短你现有的检查代码为:
{% if form.WIDGET_NAME.get('errors') %}
我遇到了类似的问题,但是我的twig模板中不存在form.points
。
我必须在控制器中获取错误数量,然后将其作为变量传递到我的模板中。$form->getErrors()
在控制器中的行为可能与您预期的不同。请参见this SO question以获取正确获取表单错误的函数。
我已经创建了一个Twig扩展来处理这个问题: 我的扩展
public function hasError($string)
{
if(strlen($string) > 4)
return true;
return false;
}
我在Twig中这样使用它
{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}
error_bubbling
设置。我已经向Symfony食谱添加了一个PR来改进文档。请随意在此处为其投票:https://github.com/symfony/symfony-docs/issues/6145 - webDEVILopers