我以为if($this->validator($request->all()))
这会返回真或假,但它每次返回真都返回一个对象
use RegistersUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'surname' => 'required|string|max:255',
'age' => 'required|integer|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'surname' => $data['surname'],
'age' => $data['age'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
public function register(Request $request){
if($this->validator($request->all())){
//create user
// function after registration
var_dump('success');
}else{
//redirect to ...
var_dump('fail');
}
}
这里有几个选项:
使用validate()
public function register(Request $request)
{
$this->validator($request->all())->validate();
dd('success'); //This won't get called if validation doesn't pass
}
使用上述方法,Laravel将为您处理响应。
或者,如果要更好地控制处理验证的方式,则可以改用passes()
方法:
public function register(Request $request)
{
if ($this->validator($request->all())->passes()) {
dd('success');
} else {
dd('fail');
}
}
手动创建验证程序