2013-07-09 58 views
0

我想在CakePHP的我的模型中添加一個驗證規則來檢查一個IP地址是否是唯一的。問題是我將我的數據庫中的IP地址保存爲無符號整數,但用戶將其作爲字符串輸入。爲此,我使用beforeSave函數將ip地址更改爲將保存的int值。有沒有辦法使beforeSave函數之後運行isUnique規則? 目前我的驗證規則是這樣的。beforeSave函數之後的CakePHP 2.x驗證

public $validate = array(
    'ip_address' => array(
     'notEmpty' => array(
      'rule' => 'notEmpty', 
      'message' => 'You must enter an IP address' 
     ), 
     'unique' => array(
      'rule' => 'isUnique', 
      'required' => 'create', 
      'message' => 'This IP address already exists' 
     ) 
    ) 
); 

回答

1

beforeValidate()操作方式:

$this->data['alias']['ip_address'] = str_replace('.', '', $this->data['alias']['ip_address']; 

它會正常工作。爲什麼int和不按順序串? int可能會給你重複。我不知道你的代碼把ip變成int,所以我可能是錯的。

+0

謝謝。我沒有考慮beforeValidate回調。我使用php函數ip2long()和long2ip()將數據保存在我的數據庫中。 –