2012-04-11 4 views
2

배경 : Symfony Forms 및 Symfony Validation 구성 요소를 사용하여 Silex 응용 프로그램의 응용 프로그램 등록 페이지에 양식을 렌더링하고 있습니다.silex 앱에서 Symfony 2 검증 구성 요소를 사용하여 Symfony 2 양식 오류를 표시하려면 어떻게합니까?

올바르게 작동하고, 렌더링, 클라이언트 측 유효성 검사 및 데이터를 내 엔티티에 바인딩하는 양식이 있습니다. 엔터티에 대한 유효성을 올바르게 검사하고 예상되는 오류를 생성하는 엔터티에 유효성 검사 메서드를 추가했습니다.

질문 : 지금 나뭇 가지 {{form_errors}}보기 도우미를 사용하여 프런트 엔드에 표시하기 위해 반환 ConstraintValidationList에서 다시 형태로 오류를 얻을합니다.

나는 API 문서 (http://api.symfony.com/2.0/Symfony/Component/Form/Form.html)를 참조했으며이를 수행하는 올바른 방법을 볼 수 없습니다. 누구든지 내가 원하는 것을 성취하는 방법을 알고 있습니까?

$app->post('/register-handler', function(Request $request) use($app) 
{ 
    // Empty domain object 
    $user = new MppInt\Entity\User(); 

    // Create the form, passing in a new form object and the empty domain object 
    $form = $app['form.factory']->create(new MppInt\Form\Type\RegisterType(), $user); 

    // Bind the request data to the form which puts it into the underlying domain object 
    $form->bindRequest($request); 

    // Validate the domain object using a set of validators. 
    // $violations is a ConstraintValidationList 
    $violations = $app['validator']->validate($user); 

    // Missing step - How do I get a ConstraintValidationList back into the 
    // form to render the errors in the twig template using the {{ form_errors() }} 
    // Helper. 

}); 

답변

2

바인드 요청 단계의 검증에서 유효성 검증 서비스를 직접 사용할 필요가 없습니다 있도록 데이터를 실행해야합니다 : 여기

내 렉스 컨트롤러 폐쇄의 코드입니다. (Silex가 아닌 Sf2에서 제공되는 검사기 서비스는 양식과 관련이 있습니다. Silex에서 수동으로 수행해야하는지 모르겠 음)

각 필드에서 오류 버블 링이 활성화되어 있지 않으면 오류가 필드에 유지됩니다 children) {{form_errors()}}

오류를 표시하는 폼의 constraintViolationList를 폼 오류로 가져와야 할 경우 Symfony \ Component \ Form \ FormError 개체로 변환하여 추가 할 수 있습니다 $ form-> addError (FormError $ formError);와 폼에;