在beforeSave函数之后进行CakePHP 2.x验证

时间:2013-07-09 16:30:29

标签: php cakephp

我正在尝试向CakePHP中的模型添加验证规则,以检查IP地址是否唯一。问题是我将数据库中的IP地址保存为unsigned int,但是用户将其作为字符串输入。为此,我使用beforeSave函数将ip地址更改为将保存的int值。有没有办法让isUnique规则在beforeSave函数之后运行? 目前我的验证规则是这样的。

    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 个答案:

答案 0 :(得分:1)

beforeValidate ():

中执行此操作
$this->data['alias']['ip_address'] = str_replace('.', '', $this->data['alias']['ip_address'];

它会正常工作。为什么int而不是字符串呢? int可能会给你重复。我不知道你的代码将ip变成int,所以我可能错了。