0

yii ActiveRecord を使用してユーザー登録を実装しようとしています。問題は、ビューが読み込まれるたびに次の例外が発生することです。

Users has an invalid validation rule. The rule must specify attributes to be validated and the validator name.
#0  
+  /Applications/MAMP/htdocs/yiiRoot/framework/base/CModel.php(259): CModel->createValidators()
#1  
+  /Applications/MAMP/htdocs/yiiRoot/framework/web/helpers/CHtml.php(1758): CModel->getValidators("username")
#2  
+  /Applications/MAMP/htdocs/yiiRoot/framework/web/helpers/CHtml.php(1205): CHtml::activeInputField("text", Users, "username", array("name" => "Users[username]", "id" => "Users_username"))    

Users モデルの関連部分は次のとおりです。

public function rules()
{
        return array(
        array('username, password, confirmation_uuid, created_at', 'required'),
        array('is_male, is_online, is_idle, is_confirmed', 'numerical', 'integerOnly'=>true),
        array('username, password, first_name, last_name, conformation_uuid', 'length', 'max'=>255),
        array('birthdate, updated_at', 'safe'),
        array('id, username, password, first_name, last_name, birthdate, is_male, is_online, is_idle, is_confirmed, confirmation_uuid, created_at, updated_at', 'safe', 'on'=>'search'),
        array('username','email','allowName'=>true,'allowEmpty'=>false ),
        array('username','required'),
        array('password','application.extensions.validators.password','strength'=>'weak', 'on'=>'register'),
        array('password', 'compare', 'compareAttribute'=>'confirm_password', 'on'=>'register'),
        array('username,password,confirm_password,first_name,last_name,birthdate,is_male,confirmation_uuid','on'=>'register'),

    );
    }

コントローラ:

public function actionRegister()
{
    $form=new Users;
            // collect user input data
            if(isset($_POST['Users']))
            {
                    $form->attributes=$_POST['User']; // set all attributes with post values
                    $form->email=$form->username;

                    // NOTE Changes to any $form->value have to be performed BEFORE $form-validate()
                    // or else it won't save to the database. 

                    // validate user input and redirect to previous page if valid
                    if($form->validate())
                    {
                            // save user registration
                            $form->save();
                            $loginURL = Yii::app()->createUrl('site/login');
                            $this->redirect($this->render('login',array('loginURL'=>$loginURL))); // Yii::app()->user->returnUrl
                    }
            }
            // display the registration form
            $this->render('register',array('form'=>$form));
}

見る:

<div class="row">
    <?php echo CHtml::activeLabel($form,'username'); ?>
    <?php echo CHtml::activeTextField($form,'username'); ?>
    <?php //echo $form->error($model,'username'); ?>
</div>

その時点でバリデーターをチェックしているのはなぜですか?そして、それが失敗する原因は何ですか?ありがとう!

4

1 に答える 1

0

あなたの最後のルール

array('username,password,confirm_password,first_name,last_name,birthdate,is_male,confirmation_uuid','on'=>'register'),

バリデータ名がありません。すべての属性をリストしてからシナリオをリストしますが、バリデーター名はリストしません。

于 2012-08-23T07:42:13.387 に答える