2012-05-01 7 views
2

モデルが生成された後、列に検証規則を追加する方法を教えてください。 propelの検証を拡張することができますが、スキーマからこれらのモデルを生成した後、これらの検証ルールをモデルの列に適用するオプションが表示されませんでした。モデルを生成した後、Propelモデルに検証ルールを追加する方法は?

実際のスキーマにこれらのルールを追加することがわかりましたが、私はそうしたくありません。

答えて

0

のいずれかのpropelで生成されたメインクラス(Userなど)では、doValidate($ column = null)メソッドをオーバーライドできます。以下の例を参照してください...リターンロジック部分には改善が必要な場合があります。

public function doValidate($columns = null){ 
    $parentErrors = parent::doValidate($columns); 
    $validationErrors = array(); 
    if(mb_strlen($this->getFirstName()) == 0){ 
     $message = '...'; 
     $vf = new ValidationFailed(UserPeer::FIRST_NAME, $message); 
     $validationErrors[] = $vf; 
    } 



    if(is_array($parentErrors)){ 
     if(!empty($validationErrors)){ 
      $validationErrors = array_merge($parentErrors, $validationErrors); 
     }else{ 
      $validationErrors = $parentErrors; 
     } 
     return $validationErrors; 
    }elseif($parentErrors === true){ 
     if(empty($validationErrors)){ 
      return true; 
     }else{ 
      return $validationErrors; 
     } 
    }else{ 
     throw UnexpectedValueException('Unexpected validation state.'); 
    } 
} 

その後、$ validationErrors = $ user-> validate();を実行できます。アプリケーションの任意の場所で戻り値をチェックします。

これがあなたの質問に答えることを願っています。

+0

返信いただきありがとうございます。私はそれを自分でハックしようとします。私はドキュメントで何か見落としているかどうかを見てwnted – dead

関連する問題