2013-10-11 18 views
1

我想在保存前驗證我的模型時使用Phalcon \ Mvc \ Model \ Validator。然而,問題在於我想檢查某個OTHER模型中字段的唯一性,而不是我目前正在驗證的字段。「獨立」模式中的Phalcon Mvc Model Validator 唯一性

例如,有一種表單允許您向新用戶發送電子郵件邀請。我想確保我的邀請模型未通過驗證,如果有人試圖重複使用現有的用戶模型的電子郵件地址(不應允許您邀請現有用戶)。

在我邀請如何能做到這一點型號:

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

我怎麼能告訴唯一性,它應該在用戶模型檢查「電子郵件」字段,而不是邀請模式?

謝謝!我能想到的實現,這將是使用自定義驗證的

回答

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瞭解更多!

相關問題