2

モデルが生成された後、列に検証ルールを追加するにはどうすればよいですか。推進力の検証を拡張できることは知っていますが、スキーマからこれらのモデルを生成した後、これらの検証ルールをモデルの列に適用するためのオプションが表示されませんでした。

明確にするために、これらのルールを実際のスキーマに追加することは知っていますが、そうしないことをお勧めします。

4

1 に答える 1

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(); を実行できます。アプリケーションの任意の場所で、戻り値を確認してください。

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

于 2012-05-03T15:19:14.933 に答える