0

我正在尝试在 CakePHP 中向我的模型添加验证规则,以检查 IP 地址是否唯一。问题是我将数据库中的 ip 地址保存为无符号整数,但用户将其作为字符串输入。为此,我使用了一个 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'
        )
    )
);
4

1 回答 1

1

beforeValidate () 中执行此操作:

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

它会正常工作。顺便说一下,为什么是 int 而不是 string?int 可能会给你重复。我不知道您将 ip 转换为 int 的代码,所以我可能错了。

于 2013-07-09T17:43:31.487 回答