2012-03-13 3 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, 유형 및 아무것도 같은 다른 검증과 시도했습니다 내가 무슨 일을하고있는 중이 야, 나를 위해 작동 ? 유효성 검사, 범위, 침실, 욕실, 정수로 크기 및 최소 길이를 사용자에게 알리고 싶습니다.

영어로 죄송합니다.

답변

2

귀하의 유효성 검사가 내 테스트에서 효과가있는 것으로 보입니다. 그러나 템플릿의 오류 메시지가 누락되었습니다. ,

당신은 글로벌 오류를 렌더링하는

{{ form_errors(form) }} 

이 필요하고 각 필드에 대해 당신은 그 오류를 표시 할 수 있습니다 예를 들어
{{ form_errors(form.size) }} 

그런 마법에 의해 당신이 당신의 오류 메시지가 표시됩니다 것처럼. 귀하의 컨트롤러를 보지 못했지만 당신이 바인딩하고 isValid를 호출하고 있는지 확신 할 수 없습니다.

그래도 문제가 계속되면 컨트롤러를 게시하시기 바랍니다.

+0

응답을위한 Tnx이므로 컨트롤러에 양식을 보내고 유효성 검사 오류가있는 동일한 페이지로 리다이렉트하는 것이 유효하지 않은 경우 확인이 이루어집니다. 양식을 제출하기 전에 유효성 검사가 필요합니까? Tnx 많이, 내 영어를 다시 불쌍히 생각합니다. 심포니 2부터 시작하겠습니다. – goma

+0

당신의 영어는 훌륭합니다 :) Symfony는 일부 유효성 검사기에 대해 html5 유효성 검사 규칙을 생성합니다 (예 : 빈 필드 허용 안함). 즉, 사용자가 필수 입력란을 채우지 않고 제출하면 브라우저가 경고를 보내고 양식 제출을 방해합니다. html5 유효성 검사가 빈 필드보다 복잡한 것을 처리 할 수 ​​있는지 여부는 알 수 없습니다. 양식 문서에는 간단한 섹션이 있습니다. http://symfony.com/doc/current/book/forms.html – user1207727

+0

대단히 감사합니다. 매우 도움이되었습니다. – goma