1

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

例如,有一个表单允许您向新用户发送电子邮件邀请。如果有人试图重用现有用户模型的电子邮件地址(不应允许您邀请现有用户),我想确保我的邀请模型验证失败。

如何在我的邀请模型中做到这一点:

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

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

谢谢!

4

1 回答 1

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了解更多信息!

于 2013-10-24T07:24:36.003 回答