Laravel Auth - 在验证失败后将用户重定向到不同的 url 函数 validator()
Laravel Auth - Redirect User to different url from function validator() after validation fails
在 mobile_no
的唯一验证失败后,我试图将用户重定向到不同的页面
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;
}
}
当我尝试这样做时,出现错误
BadMethodCallException in RedirectResponse.php line 218:
Method [validate] does not exist on Redirect.
如何重定向到其他页面?我是不是漏了什么。
validator
方法应该 return 验证器。您看到的错误是因为您 return 一个重定向响应,并且某些代码假定您 return 一个验证器并在其上调用 $validator->validate()
。
实际调用见RegistersUsers trait.
您需要改为抛出 HttpResponseException。您的异常处理程序应该捕获这些并相应地呈现响应;在这种情况下执行重定向。
在 mobile_no
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;
}
}
当我尝试这样做时,出现错误
BadMethodCallException in RedirectResponse.php line 218:
Method [validate] does not exist on Redirect.
如何重定向到其他页面?我是不是漏了什么。
validator
方法应该 return 验证器。您看到的错误是因为您 return 一个重定向响应,并且某些代码假定您 return 一个验证器并在其上调用 $validator->validate()
。
实际调用见RegistersUsers trait.
您需要改为抛出 HttpResponseException。您的异常处理程序应该捕获这些并相应地呈现响应;在这种情况下执行重定向。