TP5.1驗證器的使用


首先是驗證層的定義

namespace app\index\validate;

use think\Validate;

class User extends Validate
{
    protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];
    
    protected $message  =   [
        'name.require' => '名稱必須',
        'name.max'     => '名稱最多不能超過25個字符',
        'age.number'   => '年齡必須是數字',
        'age.between'  => '年齡只能在1-120之間',
        'email'        => '郵箱格式錯誤',    
    ];
    

 

在對應的user層可以使用

namespace app\index\controller;

use think\Controller;

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

        $validate = new \app\index\validate\User;

        if (!$validate->check($data)) {
            dump($validate->getError());
        }
    }
}

 這是一種比較典型的使用驗證層的方法

還有就是一種數據驗證

namespace app\index\validate;

use think\Validate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'checkName:thinkphp',
        'email' =>  'email',
    ];
    
    protected $message = [
        'name'  =>  '用戶名必須',
        'email' =>  '郵箱格式錯誤',
    ];
    
    // 自定義驗證規則
    protected function checkName($value,$rule,$data=[])
    {
        return $rule == $value ? true : '名稱錯誤';
    }
}

當然在任何時候都可以在controller層進行驗證數據,而不需要去Validata層追加文件進行規則寫入

前提是use think\Validate;

$validate = Validate::make([
    'name'  => 'require|max:25',
    'email' => 'email'
]);

 還有就是規則的驗證場景定義:

例如我們對用戶的入庫操作數據需要進行驗證,

但是后期唯一操作不需要在進行驗證操作等實際應用:

$data = [
    'name'  => 'thinkphp',
    'age'   => 10,
    'email' => 'thinkphp@qq.com',
];

$result = $this->validate($data,'app\index\validate\User.edit');

if(true !== $result){
    // 驗證失敗 輸出錯誤信息
    dump($result);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM