作為前端er,對於驗證這塊有着切身的體會,雖然逐漸得心應手,但始終沒有一個內置的功能拿來就能用。tp5恰好提供一個。本文簡單介紹並實現以下。主要是實現一下。
驗證的實現基於tp5內置的對象validate。
在Index模塊化下index控制器同級目錄創建一個validate文件,里面一個Vdate.php驗證文件,這個文件也可以放在common目錄下面,只要namespace正確就可。代碼如下
1 <?php 2 namespace app\index\validate; 3 use think\Validate; 4 class Vdate extends Validate{ 5 //每個字段對應一個規則,這是第一層 6 protected $rule=[ 7 ["name","require|max:10","不能為空|分類名不能超過10個字符"], 8 ["parent_id","number","必須為數字"], 9 /* ["id","number","必須是數字"], 10 ["status","number|in:1,0,-1","必須是數字|必須是是0,-1,1"],*/ 11 ]; 12 13 //應用的場景,這是第二層 14 protected $scene=[ 15 "save"=>["name","parent_id"], 16 17 ]; 18 }
可以寫多個字段,就如同我注釋的。
然后前端頁面代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>驗證數據</title> 6 </head> 7 <body> 8 <form action="{:url('index/validateF')}" method="GET"> 9 <input type="text" name="name"> 10 <input type="submit" value="提交"> 11 </form> 12 </body> 13 </html>
后端控制器index下面對應的validateF
1 public function validateF() 2 { 3 $data=input("get."); 4 print_r($data); 5 $validate=validate("Vdate"); //使用驗證 6 //scene("save")->check($data)內置方法 7 if(!$validate->scene("save")->check($data)){ 8 $this->error($validate->getError());//內置錯誤返回 9 } 10 11 //剩下操作 12 $res=model("category")->add($data); 13 if($res){ 14 $this->success('新增成功'); 15 }else{ 16 $this->error("新增失敗!"); 17 } 18 }
這樣就可以了。很簡單的實現。關於每個字段的規則,內容很多可以參考手冊或者官網吧。
本文結束。