Apabila membangun menggunakan rangka kerja Laravel baru-baru ini, saya menghadapi beberapa isu pengendalian ralat mengenai borang pendaftaran. Dalam artikel ini, saya akan berkongsi cara saya menggunakan ciri pengesahan borang dan pengendalian ralat Laravel untuk menyelesaikan ralat ini untuk membantu pembangun lain mengendalikan ralat dengan lebih baik dengan borang pendaftaran mereka.
Pertama, kita perlu memahami pengesahan borang dan mekanisme pengendalian ralat dalam Laravel. Dalam Laravel, kita boleh menggunakan kelas Validator
untuk mengesahkan data borang. Pengesah boleh mengesahkan sama ada data input memenuhi syarat yang ditentukan, seperti medan yang diperlukan, format e-mel, panjang kata laluan, dsb. Jika data input tidak memenuhi syarat yang ditentukan, pengesah mengembalikan tatasusunan ralat. Kita boleh menggunakan kaedah withErrors()
untuk menyimpan maklumat ralat ke dalam Session
dan kemudian memaparkan maklumat ralat dalam paparan. Seterusnya, mari lihat cara melaksanakan fungsi ini dalam Laravel.
Pertama, kita perlu mencipta pengesah dalam pengawal pendaftaran. Kita boleh menggunakan perintah Artisan make:validator
untuk mencipta pengesah. Contohnya:
php artisan make:validator RegisterValidator
Ini akan mencipta pengesah bernama app/Validators
dalam direktori RegisterValidator
. Kemudian kita perlu menyediakan peraturan pengesahan dan mesej ralat. Buka kelas RegisterValidator
dan tambah kod berikut:
<?php namespace AppValidators; use IlluminateValidationValidator; class RegisterValidator extends Validator { protected $messages = [ 'name.required' => '请输入用户名。', 'name.max' => '用户名不能超过255个字符。', 'email.required' => '请输入邮箱地址。', 'email.email' => '请输入有效的邮箱地址。', 'email.unique' => '该邮箱已经被注册。', 'password.required' => '请输入密码。', 'password.min' => '密码长度不能小于6个字符。', 'password_confirmation.required' => '请输入确认密码。', 'password_confirmation.same' => '两次输入的密码不一致。', ]; public function validateConfirmPassword($attribute, $value, $parameters) { $other = $this->getValue($parameters[0]); return isset($other) && strcmp($value, $other) === 0; } }
Dalam kod di atas, kami mentakrifkan beberapa peraturan pengesahan biasa dan mesej ralat. Jika pengguna tidak memasukkan medan yang diperlukan atau format input tidak betul, mesej ralat yang sepadan akan dipaparkan. Selain itu, kami juga mentakrifkan peraturan pengesahan tersuai validateConfirmPassword
untuk mengesahkan bahawa kata laluan yang dimasukkan dua kali adalah konsisten. Seterusnya, tambahkan kod berikut dalam pengawal pendaftaran:
<?php namespace AppHttpControllers; use AppUser; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; use AppValidatorsRegisterValidator; class RegisterController extends Controller { public function showRegistrationForm() { return view('auth.register'); } public function register(Request $request) { // 验证表单数据 $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); // 使用自定义的 validator 类的规则验证数据 $validator->setValidator(new RegisterValidator($validator->getTranslator())); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // 创建用户 $user = User::create([ 'name' => $request->input('name'), 'email' => $request->input('email'), 'password' => bcrypt($request->input('password')), ]); // 登录用户 auth()->login($user); // 跳转到首页 return redirect()->intended('/'); } }
Dalam kod di atas, kami menggunakan kelas Validator
terbina dalam Laravel untuk mengesahkan data borang. Kami kemudian memanggil kaedah setValidator()
untuk menggunakan peraturan kelas pengesah tersuai yang kami buat untuk mengesahkan data. Jika terdapat ralat, kami menyimpan mesej ralat dalam Session
dan mengubah hala pengguna kembali ke halaman borang. Jika pengesahan lulus, kami mencipta pengguna dan log masuk dia. Akhir sekali, kami mengubah hala pengguna ke halaman utama.
Dalam templat, kita boleh menggunakan kod berikut untuk memaparkan mesej ralat:
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
Kod di atas akan berulang melalui semua mesej ralat dalam pembolehubah $errors
dan menganggap setiap mesej ralat sebagai a Item senarai dipaparkan.
Dalam artikel ini, kami mempelajari cara menggunakan pengesahan borang dan ciri pengendalian ralat dalam Laravel untuk mengendalikan ralat borang pendaftaran. Dengan memperluaskan fungsi validator terbina dalam Laravel dengan kelas validator tersuai, kami boleh menyesuaikan peraturan dan mesej ralat dengan mudah, meningkatkan kebolehgunaan semula kod dan kebolehselenggaraan. Saya harap artikel ini dapat membantu anda mengendalikan pengesahan borang dan pengendalian ralat dengan lebih baik.
Atas ialah kandungan terperinci pengendalian ralat pendaftaran laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!