0

IPアドレスが一意であることを確認するために、CakePHPのモデルに検証ルールを追加しようとしています。問題は、IP アドレスを unsigned int としてデータベースに保存しているのに、ユーザーがそれを文字列として入力していることです。これを行うには、IP アドレスを保存される int 値に変更する beforeSave 関数を使用しています。beforeSave 関数の後に isUnique ルールを実行する方法はありますか? 現在、私の検証ルールは次のようになっています。

    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 なのですか? int は重複を与える可能性があります。IP を int に変換するコードがわからないので、間違っている可能性があります。

于 2013-07-09T17:43:31.487 に答える