【问题标题】:Phalcon\Mvc\Model\Validator\Uniqueness in "standalone" mode“独立”模式下的 Phalcon\Mvc\Model\Validator\Uniqueness
【发布时间】:2023-03-17 15:10:01
【问题描述】:

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

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

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

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

我如何告诉 Uniqueness 它应该检查 User 模型中的“电子邮件”字段,而不是 Invitation 模型?

谢谢!

【问题讨论】:

    标签: php phalcon


    【解决方案1】:

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

    查看以下代码以供参考

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 2013-09-27
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多