Форма проверки Symfony2 без класса - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь создать форму поиска без сущности.

Контроллер:

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, и у меня ничего не работает, что я делаю не так?Я хочу проверить, диапазон, спальни, ванные комнаты, размер в виде целых чисел и минимальную длину для пользователя.

Tnx и извините за мой английский.

1 Ответ

2 голосов
/ 14 марта 2012

Кажется, ваша проверка работает в моем тесте.Но вам не хватает сообщений об ошибках в шаблоне.

Вам необходимо

{{ form_errors(form) }}

для рендеринга глобальных ошибок, а затем для каждого поля вы можете отобразить его ошибки, например,

{{ form_errors(form.size) }}

Тогда как по волшебству вы должны увидеть свои сообщения об ошибках.Несмотря на то, что вы не видели ваш контроллер, я не могу быть уверен, что вы связываете и вызываете isValid.

Если у вас все еще есть проблемы, пожалуйста, опубликуйте свой контроллер тоже.

...