CAKEPHP 唯一性資料驗證任務不能正常工作

2021-08-25 18:59:54 字數 1175 閱讀 9094

遇到如下情況: 想要驗證某個欄位的合法性,

包含兩條規則,一條是cakephp自帶的isunique方法用來檢查該字段在資料庫中的唯一性

另外一條是限制該字段的輸入字符集

public $validate = array(

'slug' => array(

'isunique' => array(

'rule' => array('isunique'),

'message' => 'this slug has already been taken.',

),'charsallowed' => array(

'rule' => '/^[a-z0-9_-/s]$/i',

'message' => 'slug can only be alpha,number,space,_,-'

),),

);看起來沒問題,實際第乙個isunique驗證規則不能正常工作。

原因是cakephp預設model自帶的isunique方法中為字段查詢語句自動新增了or條件,

而or條件在當前cakephp版本不能像cakephp book中所述的那樣工作。

解決方法是定製自己的唯一性檢查, 驗證規則修改如下:

public $validate = array(

'slug' => array(

'slug' => array(

//overwrite the cake's default method isunique,

//as the or condition didn't work as expected

'rule' => array('unique',false),

'message' => 'this slug has already been taken.',

),'charsallowed' => array(

'rule' => '/^[a-z0-9_-/s]$/i',

'message' => 'slug can only be alpha,number,space,_,-'

),),

);function unique($con, $or) {

return ($this->find('count', array('conditions' => $con, 'recursive' => -1)) == 0);

CAKEPHP 唯一性資料驗證任務不能正常工作

遇到如下情況 想要驗證某個欄位的合法性,包含兩條規則,一條是cakephp自帶的isunique方法用來檢查該字段在資料庫中的唯一性 另外一條是限制該字段的輸入字符集 public validate array slug array isunique array rule array isuniqu...

驗證唯一性的不足

唯一性驗證無法真正保證唯一性。validates email,presence true,format uniqueness 不會吧,出了問題呢?下面我來解釋一下。alice 用 alice wonderland.com 註冊 alice 不小心按了兩次提交按鈕,連續傳送了兩次請求 然後就會發生下面...

yii2 驗證表單唯一性 驗證唯一

yii2 驗證表單唯一性 驗證唯一 檢視層 mobile 要先引入activeform 生成form表單 需要注意的是 這裡要開啟 ajax 驗證 use yii bootstrap activeform id login form enableajaxvalidation true,options...