我正在尝试制作没有实体的搜索表单。
控制器:
public function SearchFormAction() {
$collectionConstraint = new Collection(array(
'size' => new MinLength(3),
));
$searchform = $this->createFormBuilder(null, array(
'validation_constraint' => $collectionConstraint,
))
->add('min_range')
->add('max_range')
->add('bedrooms')
->add('bathrooms')
->add('size')
->add('user')
->getForm()
;
return $this->render("RealBundle:User:search.html.twig", array(
'searchform' => $searchform->createView(),
));
}
查看:
<div id="dialog" title="Advanced Search">
<form action="{{ path('searchresults') }}" method="post" {{ form_enctype(searchform) }} id="frmSearch">
<fieldset>
<h3>Properties</h3>
<div class="form-search-item">
{{ form_label(searchform.min_range, 'Price Range') }} {{ form_widget(searchform.min_range) }} to {{ form_widget(searchform.max_range) }}
{{ form_widget(searchform.min_range) }}
</div>
<div class="form-search-item">
{{ form_label(searchform.bedrooms, 'Bedrooms') }}: {{ form_widget(searchform.bedrooms) }}
</div>
<div class="form-search-item">
{{ form_label(searchform.bedrooms, 'Bathrooms') }}: {{ form_widget(searchform.bathrooms) }}
</div>
<div class="form-search-item">
{{ form_label(searchform.bedrooms, 'Size') }}: {{ form_widget(searchform.size) }}
</div>
<h3>User</h3>
<div class="form-search-item">
{{ form_label(searchform.user, 'User') }}: {{ form_widget(searchform.user) }}
</div>
{{ form_rest(searchform) }}
<input type="submit" value="Search">
</fieldset>
</form>
我尝试使用MinLength,MaxLenght,Type等其他验证,但对我来说没有任何效果,我做错了什么? 我想验证,范围,卧室,浴室,大小为整数,以及用户的minLenght。
Tnx抱歉我的英语。
答案 0 :(得分:2)
您的验证似乎在我的测试中有效。但是你错过了模板中的错误消息。
你需要
{{ form_errors(form) }}
渲染全局错误,然后为每个字段显示其错误,例如
{{ form_errors(form.size) }}
然后好像通过魔法你会看到你的错误信息。虽然没有看到你的控制器,但我无法确定你是否绑定并调用isValid。
如果您仍有问题,请发布您的控制器。