register.blade.php
@if(session('duplicate_email'))
<script>
alert("{{ session('duplicate_email') }}");
</script>
@endif
<script>
$(".btn-submit").on('click', function () {
var formData = $('.myForm').serialize();
var email = document.getElementById("email").value;
var emailRegex = /^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/;
if (!emailRegex.test(email)) {
alert("유효하지 않은 이메일 형식입니다.");
}
$.ajax({
url: '/register',
type: 'POST',
data: formData,
success: function(response) {
console.log(response);
window.location.href = "/login";
},
error: function(xhr, status, error) {
console.log(error);
}
});
});
</script>
RegisterController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\Admin;
use App\Http\Requests\StorePostRequest;
use Illuminate\Support\Facades\Hash;
class RegisterController extends Controller
{
public function showRegistrationForm()
{
return view('auth.register', [
'1' => 1
]);
}
public function store(StorePostRequest $request)
{
$email = $request->input('email');
$existingUser = Admin::where('email', $email)->first();
if ($existingUser) {
$request->session()->flash('duplicate_email', '이미 사용 중인 이메일입니다.');
return redirect()->route('register');
}
Admin::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => Hash::make($request->input('password')),
]);
return view('auth.login');
}
}
StorePostRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|min:6|confirmed',
];
}
public function attributes()
{
return [
'password_confirmation' => '비밀번호 확인',
];
}
public function messages()
{
return [
'name.required' => '이름을 입력해주세요.',
'email.required' => '이메일을 입력해주세요.',
'email.email' => '유효한 이메일 주소를 입력해주세요.',
'password.required' => '비밀번호를 입력해주세요.',
'password.min' => '비밀번호는 최소 6자 이상이어야 합니다.',
'password.confirmed' => ':비밀번호가 일치하지 않습니다.',
];
}
}
在Laravel项目中实现会员注册功能的过程中,通过检查重复的电子邮件来打开警报弹出窗口是一项任务。
在 AJAX 将数据传递到服务器并检查RegisterController.php文件中是否有store方法值之后,duplicate_email值将通过View中的警报通知发送。
当看上面的代码时,如果有任何不正确的语法代码,请回复。
1条答案
按热度按时间zmeyuzjn1#
把这个换了
到这个
并在错误处理中对此进行修改