如何解决在Laravel中进行Ajax验证后的电子邮件确认问题
我正在使用Laravel 7.4和PHP 7.4。
我有一个Laravel默认注册表格。提交后,它将验证电子邮件发送给用户以完成注册过程。验证后,用户可以访问仪表板页面。现在,我想使用ajax应用验证并从RegisterController获得JSON响应。我只是写了一个 postRegister 函数来处理验证。
问题:
我的验证有效,但只有问题在注册后,用户可以访问仪表板页面而无需电子邮件确认。如果我删除验证功能,现在用户只能在确认电子邮件后访问仪表板。
- 我想验证我的表单,但不绕过电子邮件确认步骤。
- 提交后,我将如何将用户重定向到验证电子邮件页面。
什么是最好的方法?
刀片
<form name="register_name" id="register_forms">
<input name="register_name" type="text" />
..............
<input id="my-register" type="submit" value="Continue">
</form>
JavaScript
$("#my-register").click(function(e){
/**Ajax code**/
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
$.ajax({
type: "post",url: "{{ route('register') }}",data: $('#register_forms').serialize(),dataType: 'json',success: function(data){
$('#success_message').fadeIn().html(data.message);
}
},error: function (err) {
if (err.status == 422) {
$('#success_message').fadeIn().html(err.responseJSON.message);
// display errors on each form field
$.each(err.responseJSON.errors,function (i,error) {
var el = $(document).find('[name="'+i+'"]');
el.after($('<span style="color: #ff0000;">'+error[0]+'</span>'));
});
}
}
});
/**Ajax code ends**/
});
RegisterController
protected function validator(array $data)
{
$validator = Validator::make($data,[
'register_email' => ['required','string','email','max:255','unique:users,email'],]);
$validator->setAttributeNames([
'register_email' => 'email',]);
return $validator;
}
protected function create(array $data)
{
$user = User::create([
'email' => $data['register_email'],]);
$user->sendEmailVerificationNotification();
return $user;
}
public function postRegister(Request $request)
{
$validator = $this->registrar->validator($request->all());
if ($validator->fails()) {
return view('auth/register')->withErrors($validator->errors());
}
}
路线
Route::get('/dashboard',function () {
return view('dashboard');
})->name('dashboard')->middleware('verified');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。