Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan pengesah dalam ThinkPHP6

Cara menggunakan pengesah dalam ThinkPHP6

王林
王林asal
2023-06-21 09:45:183162semak imbas

Dengan pembangunan Internet yang berterusan, semakin ramai orang mula menggunakan PHP untuk pembangunan laman web. Dalam PHP, menggunakan rangka kerja boleh meningkatkan kecekapan pembangunan, dan ThinkPHP ialah rangka kerja yang sangat popular. Dalam ThinkPHP, pengesah adalah komponen yang sangat penting yang boleh membantu kami mengesahkan data yang diserahkan oleh pengguna untuk memastikan ketepatan data. Jadi artikel ini akan memperkenalkan cara menggunakan pengesah dalam ThinkPHP6.

1. Apakah itu pengesah

Pengesah ialah alat yang digunakan untuk mengesahkan data, ia boleh mengesahkan format, panjang, kesahihan, dll. bagi data yang dikemukakan oleh pengguna untuk memastikannya ketepatan data. Dalam ThinkPHP6, pengesah ialah komponen bebas dan anda boleh melaksanakan pengesah tersuai dengan mewarisi kelas Pengesahan.

2. Penggunaan asas validator

Dalam ThinkPHP6, penggunaan validator adalah sangat mudah. Pertama, kita perlu menentukan kelas pengesah untuk menentukan medan yang perlu disahkan dan peraturan pengesahan yang sepadan. Berikut ialah contoh:

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];
}

Dalam kod di atas, kami mula-mula mentakrifkan kelas pengesah bernama Pengguna, dengan menyatakan medan yang perlu disahkan dan peraturan pengesahan yang sepadan. Sebagai contoh, medan nama perlu memenuhi peraturan tidak kosong dan sehingga 25 aksara, dan medan e-mel perlu memenuhi peraturan format e-mel. Pada masa yang sama, kami juga mentakrifkan tatasusunan $mesej untuk menyimpan mesej ralat setiap peraturan pengesahan.

Selepas mentakrifkan kelas pengesah, kita boleh menggunakan pengesah ini dalam pengawal untuk mengesahkan data. Berikut ialah contoh:

<?php

namespace appindexcontroller;

use thinkController;
use appindexalidateUser;

class Index extends Controller
{
    public function index()
    {
        $data = [
            'name'  =>  'Tom',
            'email' =>  'test@example.com',
        ];

        $validate = new User();

        if (!$validate->check($data)) {
            dump($validate->getError());
            // 验证失败
        }
        else {
            // 验证成功
        }
    }
}

Dalam kod di atas, kami mula-mula mentakrifkan tatasusunan $data untuk menyimpan data yang perlu disahkan. Kemudian, kami membuat seketika objek pengesah Pengguna dan menggunakan kaedah semak untuk mengesahkan tatasusunan $data. Jika pengesahan gagal, anda boleh menggunakan kaedah getError untuk mendapatkan mesej ralat. Jika pengesahan berjaya, anda boleh meneruskan operasi lain.

3. Penggunaan lanjutan pengesah

Selain peraturan pengesahan asas, ThinkPHP6 juga menyediakan banyak fungsi pengesah lanjutan untuk memenuhi keperluan pengesahan yang lebih kompleks.

  1. Pengesahan senario

Kadangkala, medan yang perlu disahkan untuk operasi berbeza mungkin berbeza Dalam kes ini, kami boleh menggunakan pengesahan senario untuk menyelesaikan masalah ini. Dalam ThinkPHP6, kita boleh mentakrifkan senario yang berbeza dalam kelas pengesah dan menentukan senario semasa yang perlu digunakan dalam pengawal. Berikut ialah contoh:

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];

    protected $scene = [
        'add'   =>  ['name', 'email'],
        'edit'  =>  ['name'],
    ];
}

Dalam kod di atas, kami mentakrifkan dua senario, iaitu tambah dan edit. Antaranya, senario tambah memerlukan pengesahan nama dan medan e-mel, manakala senario edit hanya memerlukan pengesahan medan nama. Dengan cara ini, apabila digunakan dalam pengawal, anda boleh menentukan adegan semasa yang perlu digunakan.

$data = input('post.');
$validate = new User();
if (!$validate->scene('add')->check($data)) {
    // 验证失败
}
else {
    // 验证成功
}
  1. Peraturan pengesahan tersuai

Selain peraturan pengesahan terbina dalam, kami juga boleh menyesuaikan peraturan pengesahan untuk memenuhi keperluan khusus. Dalam ThinkPHP6, kita boleh menambah peraturan pengesahan tersuai melalui kaedah addRule. Berikut ialah contoh:

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'email' =>  'email|checkEmail',
    ];

    protected $message = [
        'email.email'  =>  '邮箱格式错误',
        'email.checkEmail'  =>  '邮箱不允许注册',
    ];

    protected function checkEmail($value, $rule, $data)
    {
        if (in_array($value, ['admin@example.com', 'superadmin@example.com'])) {
            return false;
        }
        else {
            return true;
        }
    }
}

Dalam kod di atas, kami mula-mula menambah peraturan checkEmail pada peraturan pengesahan medan $email. Kemudian, mesej ralat peraturan checkEmail ditakrifkan dalam tatasusunan $mesej. Akhir sekali, kaedah checkEmail ditakrifkan dalam kelas pengesahan untuk melaksanakan logik pengesahan tersuai kami (dalam contoh ini, dua alamat e-mel admin@example.com dan superadmin@example.com tidak dibenarkan). Dengan cara ini, semasa melakukan pengesahan data, kaedah checkEmail akan dipanggil secara automatik untuk pengesahan.

Di atas adalah kaedah asas dan penggunaan lanjutan pengesah dalam ThinkPHP6. Pengesah ialah komponen yang sangat penting yang boleh memastikan ketepatan data kami dan juga meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dalam pembangunan sebenar, kita harus menggunakan pengesah secara fleksibel mengikut situasi sebenar untuk membantu kerja pembangunan kita.

Atas ialah kandungan terperinci Cara menggunakan pengesah dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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