2012-03-13 13 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のような他の検証をしてみてくださいました? 私は、範囲、寝室、バスルーム、整数としてのサイズ、およびユーザーの最小値を検証したいと考えています。

Tnxと申し訳ありません。

答えて

2

あなたの確認は私のテストでうまくいくようです。しかし、テンプレートにエラーメッセージがありません。

あなたはグローバルエラーをレンダリングするために、そして魔法で、あなたのエラーメッセージが表示されるはずかのように、各フィールドのためにあなたが次に例えば

{{ form_errors(form.size) }} 

、そのエラーを表示することができます

{{ form_errors(form) }} 

を必要としています。あなたのコントローラを見ていないが、あなたがバインドしてisValidを呼び出すことは確かではありません。

まだ問題が解決しない場合は、コントローラも投稿してください。

+0

Tnxが応答するため、コントローラにフォームを送信し、エラーを示す同じページに有効なリダイレクトがない場合、検証が行われます。フォームを提出する前に検証する必要はありますか? Tnxたくさんの、私の英語をもう一度申し訳ありません、私はsymfony2から始めています。 – goma

+0

あなたの英語はうまくいきます:) Symfonyはいくつかのバリデーターに対してhtml5検証ルールを生成します。例えば、空白フィールドを許可しないなどです。これは、ユーザーが必要なフィールドに記入せずに送信した場合、ブラウザが警告を出してフォームが送信されないようにすることを意味します。 html5の検証で空白のフィールドより複雑なものを処理できるかどうかはわかりません。フォーム文書には簡単なセクションがあります:http://symfony.com/doc/current/book/forms.html – user1207727

+0

ありがとう非常に助かりました – goma