1

Yii でいくつかの変数の値を検証する必要があります。

私は を持っていません。modelプレビルドの yii が必要ですpublic method

それらのいくつかは整数でなければならず、他の文字列でなければなりません。

値は GET で渡されます。

yii が持つすべての検証クラスを試しましたが、どれも機能しませんでした。

誰かがこれを試して成功しましたか?

私は次のようなものが必要です:

$validator = new CValidator();

$result = $validator->validate(array($key=>$value));

提案のために開かれた

4

2 に答える 2

5

特定のバリデータに対してそれを行うことができます:

$Validator = new CEmailValidator;

if($Validator->validateValue($value))
{
    // Valid
}

Yii フレームワーク ファイル CEmailValidator.php から:

/**
* Validates a static value to see if it is a valid email.
* Note that this method does not respect {@link allowEmpty} property.
* This method is provided so that you can call it directly without going through the model validation rule mechanism.
* @param mixed $value the value to be validated
* @return boolean whether the value is a valid email
* @since 1.1.1
*/
public function validateValue($value)
于 2013-04-29T09:23:13.490 に答える
4

Yii バリデーターはモデルと緊密に統合されています。したがって、少なくともダミー モデル オブジェクトが必要です。

私の提案は...ダミーのフォームモデルクラスを作成する..

class MyValidator extends CFormModel {
    public function __get($name) {
        return isset($_POST[$name])?$_POST[$name]:null;
    }

    static function myValidate( Array $rules ) {
        $dummy = new MyValidator();

        foreach($rules as $rule) {
            if( isset($rule[0],$rule[1]) ) {
                $validator = CValidator::createValidator( 
                     $rule[1], 
                     $dummy, 
                     $rule[0], 
                     array_slice($rule,2) 
                );
                $validator->validate($dummy);
            }
            else { /* throw error; */ }
        }

        print_r( $dummy->getErrors() );
        return !$dummy->hasErrors();
    }
}

この myValidate 静的メソッドを以下のようにどこでも使用します...

$rules = array(
    array('name, email', 'required'),
    array('email', 'email'),
);


if( MyValidator::myValidate($rules) ) {
    ....
}
于 2012-09-25T11:01:24.073 に答える