我想在保存之前验证我的模型时使用Phalcon \ Mvc \ Model \ Validator。然而,问题在于我想检查某些其他模型中字段的唯一性,而不是我目前正在验证的字段。
例如,有一个表单允许您向新用户发送电子邮件邀请。如果有人试图重复使用现有用户模型的电子邮件地址(我们不应该邀请现有用户),我希望确保我的邀请模型无法通过验证。
如何在我的邀请模型中执行此操作:
public function validation()
{
$this->validate(new Uniqueness(array(
'field' => 'email'
)));
}
如何判断唯一性是否应该检查用户模型中的“电子邮件”字段,而不是邀请模型?
谢谢!
答案 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了解更多信息!