没有类的Symfony2验证表单

时间:2012-03-13 20:42:56

标签: forms validation symfony

我正在尝试制作没有实体的搜索表单。

控制器:

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抱歉我的英语。

1 个答案:

答案 0 :(得分:2)

您的验证似乎在我的测试中有效。但是你错过了模板中的错误消息。

你需要

{{ form_errors(form) }}

渲染全局错误,然后为每个字段显示其错误,例如

{{ form_errors(form.size) }}

然后好像通过魔法你会看到你的错误信息。虽然没有看到你的控制器,但我无法确定你是否绑定并调用isValid。

如果您仍有问题,请发布您的控制器。