2012-03-13 2 views
1

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

Контроллер:

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

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

ответ

2

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

Вам нужно

{{ form_errors(form) }} 

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

{{ form_errors(form.size) }} 

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

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

+0

Tnx для ответа, поэтому его проверка выполняется, отправив форму контроллеру, и если она недействительна, перенаправляется на ту же страницу, на которой показаны ошибки. В любом случае, перед тем, как отправить форму? Tnx много, и извините за мой английский снова, я начинаю с symfony2. – goma

+0

Ваш английский хорошо :) Symfony будет генерировать правила проверки html5 для некоторых валидаторов, например, не позволяя пустое поле. Это означает, что если пользователь не заполнил требуемое поле и попадает в броузер, браузер предупредит их и не сможет отправить форму. Я не знаю, может ли проверка html5 обрабатывать все более сложные, чем пустые поля. В документации по форматам есть краткий раздел: http://symfony.com/doc/current/book/forms.html – user1207727

+0

Большое спасибо, очень полезно – goma

Смежные вопросы