1. 程式人生 > >thinkphp5.0學習(十):TP5.0驗證器

thinkphp5.0學習(十):TP5.0驗證器

一、驗證器

1.控制器中使用驗證器

// 例項化驗證類(驗證規則)Validate([驗證資訊],[錯誤資訊])
$validate=new Validate(
    [
        'username'=>"require|length:6,12",
        'password'=>"require|confirm:repassword"
    ],
    [
        'username.require'=>"使用者名稱不存在",
        'username.length'=>"長度不滿足",
        'password.require'
=>"密碼不存在", 'password.confirm'=>"兩次密碼不一致" ] ); // 接收使用者提交的資料 $data=input("post."); // 進行驗證 if($validate->check($data)){ // 驗證正確以後 $arr['username']=$data['username']; $arr['password']=md5($data['password']); $arr['time']=time(); $arr['status']=$data['status']; if
(Db::table('admin')->insert($arr)) { $this->success('新增成功'); }else{ $this->error('新增失敗'); } }else{ dump($validate->getError()); }

2.驗證器的包裝重複使用

1.驗證控制器中

<?php 
// 宣告名稱空間
namespace app\index\validate;
// 宣告驗證器
use think\Validate;
/**
* 
*/
class Admin extends Validate
{
// 驗證器規則 protected $rule=[ 'username'=>"require|length:6,12", 'password'=>"require|confirm:repassword" ]; // 驗證器提示資訊 protected $message=[ 'username.require'=>"使用者名稱不存在", 'username.length'=>"長度不滿足", 'password.require'=>"密碼不存在", 'password.confirm'=>"兩次密碼不一致" ]; } ?>

2.使用控制器中

public function yanzhengqi(){
    // 接收資料
    $data=input('post.');
    // 例項化驗證器
    $validate=new \app\index\validate\Admin;
    if($validate->check($data)){

    }else{
        dump($validate->getError());
    }
}

二、驗證器使用場景

1.控制器中直接使用

$rule = [
    'name'  => 'require|max:25',
    'age'   => 'number|between:1,120',
    'email' => 'email',
];
$msg = [
    'name.require' => '名稱必須',
    'name.max'     => '名稱最多不能超過25個字元',
    'age.number'   => '年齡必須是數字',
    'age.between'  => '年齡只能在1-120之間',
    'email'        => '郵箱格式錯誤',
];
$data = [
    'name'  => 'thinkphp',
    'age'   => 10,
    'email' => '[email protected]',
];
$validate = new Validate($rule);
$validate->scene('edit', ['name', 'age']);
$result = $validate->scene('edit')->check($data);

2.類中使用

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'        => '郵箱格式錯誤',    
    ];

    protected $scene = [
        'edit'  =>  ['name','age'],
    ];

}

2.使用

$data = [
    'name'  => 'thinkphp',
    'age'   => 10,
    'email' => '[email protected]',
];

$validate = new \app\index\validate\User($rule);
$result = $validate->scene('edit')->check($data);

相關推薦

thinkphp5.0學習TP5.0驗證

一、驗證器 1.控制器中使用驗證器 // 例項化驗證類(驗證規則)Validate([驗證資訊],[錯誤資訊]) $validate=new Validate( [ 'u

tp5.0 學習虛擬環境安裝

安裝php admin cat code logs exe erro ron log 一、文件目錄: application: 應用目錄,開發文件存放地 extend:擴展 public:入口文件 thinkphp:核心代碼 vendor:第三方類庫 二、域名Apache配

thinkphp5.0學習入口檔案、路由模式、路由設定和url生成

一、路由的作用 簡化URL地址,方便記憶 有利於搜尋引擎的優化 二、入口檔案 前後臺分離 在網站public目錄下(專案\public)新建admin.php 開啟admin.ph

thinkphp5.0學習 獲取請求類和URL基本資訊

一、系統類(thinkphp\library\think) Config Controller Env Route Url View Request 二、系統方法(thinkphp\helper.php) dump();格式化輸出 contr

thinkphp5.0學習資料庫操作

一、支援資料庫的型別 Mysql,SqlServer,pgSQL,Sqlite等資料庫的支援 二、如何連線資料庫 1.配置檔案定義 a.配置檔案目錄 專案\application\database.php b.如何配置 return [

ionic學習ionic3專案打包成手機瀏覽器、安卓apk專案

主要目的:將ionic專案打包成手機瀏覽器的專案,可以測試掃描二維碼等手機可用的功能。 步驟: 1. 新增瀏覽器打包環境 ionic cordova platform add browser   2. 打包:   ionic

Java多執行緒學習AQS 原理以及 AQS 同步元件總結

常見問題:AQS 原理?;CountDownLatch和CyclicBarrier瞭解嗎,兩者的區別是什麼?用過Semaphore嗎? 本節思維導圖: 阿里雲產品 1888 代金券領取:https://promotion.aliyun.com/ntms

opencv學習高斯模糊理論知識

理論知識: 參考連結: 對Photoshop高斯模糊濾鏡的演算法總結:http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html Python計算機視覺3:模糊,平滑,去噪:https://www.cnblogs.

Python3學習redis的連線和使用

1.reids的連線Redis使用connection pool來管理對一個redis server 的所有連線,避免每次建立,釋放連線的開銷,預設,每個Redis例項都會維護一個自己的連線池。可以直接建立一個連線池,然後作為引數Redis,這樣就可以實現多個Redis例項共

Openresty學習Nginx內部變數的增加和使用

在Openresty學習(九)基礎上,定義新的內部變數my_method(表示請求的方法),增加對請求方法的檢查。 配置:         location /hello {             default_type text/html;          

Spring Boot學習Spring Boot 與快取

快取,我們應該已經很熟悉了。那麼今天就來學習一下Spring Boot中怎麼使用快取。 1、說起快取,先來了解下JSR107 首先什麼是JSR?         JSR是Java Specification Requests 的縮寫 ,Java規範請求,故名思議提交

SODBASE CEP學習線上動態修改EPL規則

在實際專案中,常常會需要輸入資料不斷的條件下,線上修改規則。例如:交易策略中,以一定時間視窗的價格平均值和閾值比較決定交易行為。當時間視窗滑動過程中,需要修改閾值。如果單純的停掉這條EPL,修改,再啟動,之前的時間視窗的資料就會丟失,即使不丟失,因為閾值變了,之前的中間結

ElasticStack學習深入ElasticSearch搜尋之QueryFiltering、多/單字串的多欄位查詢

一、複合查詢   1、在ElasticSearch中,有Query和Filter兩種不同的Context。Query Context進行了相關性算分,Filter Context不需要進行算分,同時可以利用Cache,獲取更好的效能。   2、bool Query:一個布林查詢,是一個或者多個查詢子

【JMeter4.0學習】JMeter對服務監控測試腳本開發

AD extras serve 1.4 gen ext extra pan AS 本文主要來說一下如何通過JMeter插件來監控服務器CPU、內存、磁盤、網絡等相關資源。 首先,需要下載相關JMeter插件: JMeterPlugins-Standard-1.4.0.z

C++學習之路虛繼承引入的執行效率

存取 ++ 移位 繼承 模型 虛函數 必須 執行 amp 這篇文章不知道取啥名字了,暫且這樣叫,直接看場景就明白了。節選自《深度探索C++對象模型》 Point3d origin, *pt = &origin; (1)origin.x = 0; (2)pt->

【JMeter4.0學習】之JMeter對Mysql、Oracle數據庫性能測試腳本開發

conn 遇到的問題 mys .cn SQ 數據庫性能測試 pos rac 問題總結 一、MySQL數據庫鏈接: 註:下面所產生的問題一律參考詳見:《【JMeter4.0】之遇到的問題總結(持續更新)》(包括Mysql、Orcale) 準備:引包,包路徑一定要放對位置,

Linux 學習之路磁碟及檔案系統管理

磁碟及檔案系統管理 檔案系統訪問控制列表 setfacl ​ -b Remove all ​ -m ​ -k 塊點陣圖:bitmap 硬連結:多個檔案的路徑指向同一個inode號 軟連結|符號連結: 該檔案被硬連結的次數 drwxr-x

java基礎學習總結可變長度引數以及foreach迴圈原理

一、語法糖        語法糖是一種幾乎每種語言或多或少都提供過的一些方便程式設計師開發程式碼的語法,它只是編譯器實現的一些小把戲罷了,編譯期間以特定的位元組碼或者特定的方式對這些語法做一些處理,開發者就可以直接方便地使用了。這些語法糖雖然不會提供實質性

javaweb學習筆記XML

目錄   1 xml入門 2 xml語法 3 xml顯示 4 XML解析方式及工具 5 xml約束 1 xml入門 Extensible Markup Language(可擴充套件標記語言),XML 的設計宗旨是傳輸資料,而不是顯示資料。XML 標籤

學習筆記使用支援向量機區分僵屍網路DGA家族

1.資料蒐集和資料清洗       ·1000個cryptolocker域名       ·1000個post-tovar-goz域名       ·alexa前1000域名   &n