“独立”模式下的Phalcon \ Mvc \ Model \ Validator \ Uniqueness

时间:2013-10-11 22:26:21

标签: php phalcon

我想在保存之前验证我的模型时使用Phalcon \ Mvc \ Model \ Validator。然而,问题在于我想检查某些其他模型中字段的唯一性,而不是我目前正在验证的字段。

例如,有一个表单允许您向新用户发送电子邮件邀请。如果有人试图重复使用现有用户模型的电子邮件地址(我们不应该邀请现有用户),我希望确保我的邀请模型无法通过验证。

如何在我的邀请模型中执行此操作:

public function validation()
{
    $this->validate(new Uniqueness(array(
        'field' => 'email'
    )));
}

如何判断唯一性是否应该检查用户模型中的“电子邮件”字段,而不是邀请模型?

谢谢!

1 个答案:

答案 0 :(得分:2)

我能想到的一种方法是使用自定义验证,

检查以下代码以供参考

class UniqueValidatorUser extends Validator implements ValidatorInterface
{
    public function validate($record)
    {
        $field = $this->getOption('field');
        $value = $record->readAttribute($field);
        $users = Users::find(array(
                                "conditions" => array("name" => $value)
                            ));

        if(count($users) == 1)
        {
            $this->appendMessage("The Name is already in use", $field, "Unique");
            return false;
        }
        return true;
    }
}

在您的邀请模型中,您必须输入以下代码

public function validation()
        {

            $this->validate(new UniqueValidatorUser(array(
                                    "field"  => "email",
                                )));
         }

请参阅http://docs.phalconphp.com/en/latest/reference/validation.html了解更多信息!