如何将注册失败的验证重定向到laravel jetstream fortify中带有锚的url
如果我更改validator验证->返回重定向失败。。。。。我得到错误,因为登录需要$user的实例,我发送了一个响应 这个默认值很好,但对我来说不是如何将注册失败的验证重定向到laravel jetstream fortify中带有锚的url,laravel,fortify,laravel-livewire,jetstream,Laravel,Fortify,Laravel Livewire,Jetstream,如果我更改validator验证->返回重定向失败。。。。。我得到错误,因为登录需要$user的实例,我发送了一个响应 这个默认值很好,但对我来说不是 public function create(array $input) { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'ema
public function create(array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
])->validate();
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
}
那就给我一个:
Illumb\Auth\SessionGuard::login():参数#1($user)的类型必须为Illumb\Contracts\Auth\Authenticatable,Illumb\Http\RedirectResponse,在第57行的…endor/laravel/fortify/src/Http/Controllers/RegisteredUserController.php中调用
public function create(array $input)
{
$validator = Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
]);
if($validator->fails()) {
return Redirect::to(URL::previous() . "#my-anchor")->withInput()->with('error', $validator->messages()->first());
} //Thats I want
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
}
我以前没有这样做过,但也许你可以找到定制它的方法。CreateNewUser在RegisteredUserController的store方法中被调用,第一个方法返回用户的实例。所以在这里你可以
if($validation->fails())
return $validation->messages()->first();
和在存储方法中
public function store(Request $request, CreatesNewUsers $creator): RegisterResponse
{
$user = $creator->create($request->all()));
if($user instanceof User::class) {
event(new Registered($user);
$this->guard->login($user);
return app(RegisterResponse::class);
} else
return Redirect::to(URL::previous()."#my-anchor")->withInput()->with('error', $user);
}
尝试一下,但我建议您如果works扩展此寄存器控制器并修改此存储方法非常感谢,我可以稍微改进一下,但现在:Laravel\Fortify\Http\Controllers\RegisteredUserController::store():返回值的类型必须为Laravel\Fortify\Contracts\RegisterResponse,照亮\Http\RedirectResponse返回已解决!只有我需要删除:RegisterResponse作为唯一的响应我很高兴。那里的编码很好!
public function store(Request $request, CreatesNewUsers $creator): RegisterResponse
{
$user = $creator->create($request->all()));
if($user instanceof User::class) {
event(new Registered($user);
$this->guard->login($user);
return app(RegisterResponse::class);
} else
return Redirect::to(URL::previous()."#my-anchor")->withInput()->with('error', $user);
}