Rumah > rangka kerja php > Laravel > pengendalian ralat pendaftaran laravel

pengendalian ralat pendaftaran laravel

PHPz
Lepaskan: 2023-05-20 21:29:36
asal
734 orang telah melayarinya

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
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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('/');
    }
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan