2012-11-16 2 views
2

내가 양식 유효성 검사에 대한 Respect Validation을 사용하고있다 array_values($errors) 통해 반복Respect Validation에서 유효성 검사 오류 메시지를받는 방법?

$app->post('/', function() use ($app) { 

    $validator = v::key('name', v::string()->notEmpty()) 
        ->key('email', v::email()->notEmpty()) 
        ->key('message', v::string()->notEmpty()); 

    $errors = array(); 

    try{ 
     $validator->assert($_POST); 
    } catch (\InvalidArgumentException $e) { 
     $errors = $e->findMessages(array(
      'notEmpty'  => '{{name}} is required', 
      'email'  => '{{name}} must be a valid email' 
     )); 
    } 

    if ($validator->validate($_POST)) { 
     // do stuff 

     $app->redirect('/'); 

    } else { 

     $app->render('index.php', array('field_errors' => array_values($errors))); 

    } 
}); 

저를 줄 것이다 : 그것은 Respect Validation를 사용

name is required 
email must be a valid email 
message is required 

을 수행해야하는 방법 :

"" is required 
email must be a valid email 

내가 좋아하는 뭔가가 필요

+0

나는 긍정적이지는 않지만 [알려진 버그] (https://github.com/Respect/Validation/issues/86)와 관련이 있다고 생각합니다. –

답변

4

메시지가 있지만 findMessages 조회가 notEmptyemail을 검색 중입니다. 당신이 실제로 $errors에 무엇을 가지고

은 다음과 같습니다

Array 
(
    [0] => 
    [1] => email must be a valid email 
) 

$errors[0]를 찾을 수 없습니다 notEmpty에 대한 조회입니다.
$errors[1]은 (는) email을 (를) 검색 한 것입니다.

당신이 질문 name, emailmessage의 필드를 찾아 변경하는 경우 :

다음
$errors = $e->findMessages(array(
     'name'   => '{{name}} is required', 
     'email'  => '{{name}} must be a valid email', 
     'message'  => '{{name}} is required' 
    )); 

당신은 원하는 결과를 얻을 :

Array 
(
    [0] => name is required 
    [1] => email must be a valid email 
    [2] => message is required 
) 

변명 지연 응답을 나는 순수하게 발견 우연히, Respect\Validation issue tracker 공무원의 지원을 요청하면 훨씬 빠른 결과를 얻을 수 있습니다. 이는 또한 경험 한 문제를 피할 수 있도록 개선을 위해 제안 할 수있는 이상적인 플랫폼입니다. Respect 팀은 열성적이고 친절하며 항상 기꺼이 도와 줄 것입니다.

nJoy!

0

위의 두 가지 대답은 비슷하다고 생각합니다. 메시지와 이름 및 전자 메일을 포함하는 오류 메시지 코드 블록을 추가하기 만하면됩니다.

$errors = $e->findMessages(array(
    'notEmpty'  => '{{name}} is required', 
    'email'  => '{{email}} must be a valid email', 
    'notEmpty'  => '{{message}} please enter a message' 
));