2013-06-16 7 views
1

현재 laravel 4를 테스트하고 있지만 laravel docs에서 오류 메시지를 반환하는 데 문제가 있습니다. $messages->first('email');은 메시지를 반환해야하지만 어떤 methog id도 시도하지 않아도 messages 나는 오류를 얻을laravel 4 유효성 검사 메시지 오류가 반환되었습니다

내 cobtroller

public function postSignup() 
    { 
     $rules = array(
      'display_name'  => 'required|unique:users', 
     ); 

     $messages = array(
      'display_name.required' => 'Felhasználónév kötelező', 
      'display_name.unique' => 'Ez a Felhasználónév foglalt', 
     ); 

     $val = Validator::make(Input::all(), $rules, $messages); 

     if ($val->passes()) 
     { 
      $data = array('msg' => 'yay'); 
     } 
     else 
     { 
      print_r($messages->first('display_name')); 
     } 

     return Response::json($data); 
    } 

{ "오류"{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to a member function first() on a non-object"

난 그냥 테스트에서 print_r에 대한 all으로하려고하면 ($ messages-> 모든()); 다음을 얻는 것

{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to a member function all() on a non-object" 

내가 잘못하고있는 것을 누군가 지적 할 수 있습니까?

답변

3

당신은 인쇄 할 controller

if ($val->passes()) 
{ 
    $data = array('msg' => 'yay'); 
} 
else 
{ 
    $messages = $validator->messages(); 
    $data = array('msg' => $messages->first('display_name')); 
} 
return Response::json($data); 

print_r(...);을 시도 할 수 있습니다 : 유효성 검사기 :: 메이크업 방법은 3 개 인수를 받아 템플릿 외부로 출력. 클라이언트 측에서 당신은 (예 : jQuery를 사용)이 같은 msg 뭔가

$.get('url', function(data){ 
    if(data.msg == 'yay') 
    { 
     // success 
    } 
    else 
    { 
     // failed, so data.msg contains the first error message 
    } 
}); 
+0

도움을 주셔서 감사합니다. L3 조금 후에 L4를 사용하여 혼란 스 렀습니다. –

+0

@WebStudent, 가장 환영합니다 .-) –

0

Validator :: make 메서드는 두 개의 인수 만 허용합니다.

+1

아니,'검사기 :: make' 방법은 세 개의 인수를 받아들이을 확인할 수 있습니다. 세 번째 것은 선택 사항입니다. –

0

유효성 검사기에서 전달한 메시지 배열에 액세스하고 있으며 유효성 검사기에서 생성 한 오류 메시지는 액세스하지 않습니다. 여기에 코드를 변경합니다

$val->messages()->first('email') 

참고 :

/** 
* Create a new Validator instance. 
* 
* @param array $data 
* @param array $rules 
* @param array $messages 
* @return \Illuminate\Validation\Validator 
*/ 
public function make(array $data, array $rules, array $messages = array()) 
관련 문제