TP5驗證類的使用


  今天用到TP5的validate驗證類,發現TP5.0和TP5.1的一點不同,隨手記上一筆.

    首先TP5.0使用,在controller同級建一個validate文件夾,因為是純接口模式的項目,我們應當吐出json格式的信息,TP自帶的是頁面信息,所以寫個基類轉換一下.

  還有一個拋異常的類

  基類都寫好了,建立一個驗證器

 

class BrandsValidate extends BaseValidate
{
protected $rule = [
'要驗證的參數名' => '驗證規則',
];

//這里有一個$msg作為錯誤提示信息,但是我們在異常類的定義了; 舉個例子
  protect $msg = [
    '要驗證的參數名.驗證規則' => '錯誤提示信息,如果其他規則未自己定義,會使用框架自己的定義'
  ];
protected $scene = [
'應用場景名' =>['要驗證的參數名,與上面$rule的一致'],
];

}


在控制器中的使用
//參數基本驗證
$validate = new BrandsValidate();
if (!$result = $validate->scene('add')->goCheck())
throw new ParameterException($result);

想new一個驗證對象,scene就是調用場景,如果參數錯誤就會調用goCheck,目前來說覺得validate的一個優點,當我的參數很多,並且有重復的時候,不用重復的寫,例如添加和修改,基本上只差一個ID.


下面就是遇到的小坑坑.

  場景是 有個驗證規則是
require|max:11|integer    一個ID的基本驗證  但是在刪除中,我允許刪除多個ID,所以我要求傳的是1,2,3這樣的,那么我要重寫他的驗證規則,在TP5.0中可以在場景中直接重寫.

比如我有個場景delete ,要驗證的參數Id只要他不能為空就行,其他驗證有單獨的函數,那我直接在場景中直接修改
protected $scene = [
'delete' =>['id'=>'require'],
];
但是在TP5.1中不支持,要創建一個新的場景
public function seneDelete()
{
    return $this->only(['id'])->remove('id','integer,max');
}


免責聲明!

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



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