简体   繁体   English

Phalcon PHP验证唯一性,但允许为空值

[英]Phalcon PHP validation Uniqueness but allow empty values

I have the following validation: 我有以下验证:

use Phalcon\Validation;
use Phalcon\Validation\Validator\Uniqueness;

class Users extends BaseModel {
    public function validation() {
        $validator = new Validation();
        $validator->add('some_data', new Uniqueness([
                    'message' => 'this field must be unique or epmty'
        ]));
        // some other rules (...)
        return $this->validate($validator);
    }
}

The question is how to allow pass empty data. 问题是如何允许传递空数据。 I'd like to save in database NULL if data is empty or unique value if it's passed. 如果数据为空,则我想保存在数据库NULL中;如果传递数据,我想保存为唯一值。

you can also do this 你也可以这样做

public function validation()
{
    $validator = new Validation();

    if (!empty($this->getSomeData())) {
        $validator->add('some_data', new Uniqueness([
            'message' => 'this field must be unique or epmty'
        ]));
    }
    // some other rules (...)
    return $this->validate($validator);
}

Ok, I found solution with CallbackValidator 好的,我找到了CallbackValidator的解决方案


    $validator->add('some_data', new CallbackValidator([
                    "callback" => function($data) {
                        if (!empty($data->getSomeData())) {
                            return new Uniqueness([
                                "message" => "this field must be unique or epmty"
                            ]);
                        }
                    }
        ]));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM