我希望当验证器失败时,转到 home.blade.php 中注册表单的同一部分,而不是页面的开头。
有人可以帮我做到这一点吗? 注册 Controller .php
protected function validator(array $data)
{
$validator = Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'phone' => ['required', 'string'],
]);
if ($validator->fails()) {
return redirect('/#register')
->withErrors($validator)
->withInput();
}
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$customization = New Customization();
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'phone' => $data['phone'],
'password' => Hash::make($data['password']),
'cuenta' => $data['cuenta'],
'avatar' => "https://i0.wp.com/www.winhelponline.com/blog/wp-content/uploads/2017/12/user.png?fit=256%2C256&quality=100&ssl=1",
]);
$customization->user_id = $user->id;
$customization->save();
return $user;
}
这是 laravel 上的错误:
请问我需要一些帮助
最佳答案
只需从您的验证器
函数中删除以下内容:
if ($validator->fails()) {
return redirect('/#register')
->withErrors($validator)
->withInput();
}
验证器函数期望返回 \Illuminate\Contracts\Validation\Validator
的实例。
因此更改为:
return Validator::make([
// Your rules here
]);
Controller 将在失败时自动重定向回来并显示错误。
如果您想在失败时重定向到其他地方,您可以通过在 Controller 中添加以下内容来覆盖 register
方法:
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
return redirect('/#register')
->withErrors($validator)
->withInput();
}
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
关于javascript - 调用未定义的方法 Illuminate\Http\RedirectResponse::validate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811764/