2017-03-20 3 views
0

내가 유일한 유효성 검사가 mobile_noLaravel 인증이 - 검증 나는이 작업을 수행 할 때

use Illuminate\Support\Facades\Validator; 
use Illuminate\Foundation\Auth\RegistersUsers; 
use App\User; 
use App\Http\Controllers\Controller; 

class RegisterController extends Controller 
    { 
     use RegistersUsers; 

     protected function validator(array $data){ 
      $validator = Validator::make($data, $rules, $messages); 
      // If unique validation fails 
      if($validator->fails()){ 
       $failed = $validator->failed(); 
       // if failed because unique mobile number validation rule 
       if(count($failed) == 1){ 
        foreach ($failed as $key => $value) { 
         if($key == 'mobile_no'){ 
          if(count($value) == 1 && isset($value['Unique'])){ 
           return redirect('/verify'); 
          } 
         } 
        } 
       } 
      return redirect('/somepage'); 
      } 
     return $validator; 
    } 
} 

실패 후 다른 페이지로 사용자를 리디렉션하려고 실패한 후) 기능 검사기 (에서 다른 URL로 사용자를 리디렉션, 그것은 제공 오류

BadMethodCallException in RedirectResponse.php line 218: 
Method [validate] does not exist on Redirect. 

어떻게 다른 페이지로 리디렉션 할 수 있습니까? 나는 뭔가를 놓친다.

+0

컨트롤러에 **''Validator' **를 추가 했습니까? – linktoahref

+0

정확한 코드입니까? 오류 메시지와 코드가 일치하지 않는 것 같습니다. – Samsquanch

+0

@linktoahref 죄송합니다! 그것은 의사 코드입니다. 내가 추가 한 가져 오기 코드를 변경합니다 –

답변

1

validator 메서드는 유효성 검사기를 반환해야합니다. 리디렉션 응답을 반환하기 때문에 표시되는 오류가 있으며 일부 코드에서는 유효성 검사기를 반환하고 $validator->validate()을 호출한다고 가정합니다.

실제 전화는 RegistersUsers trait에서 찾을 수 있습니다.

대신 HttpResponseException을 발생시켜야합니다. 예외 핸들러는이를 catch하고 이에 따라 응답을 렌더링해야합니다. 이 경우 리디렉션을 수행하십시오.