遇到如下情況: 想要驗證某個欄位的合法性,
包含兩條規則,一條是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...