谁一开始就是大神?

rules自己写的规则失效[2.0]

Controller代码:

                $model = new \advanced\models\User;
		//设置scenario
		$model->setScenario( 'abc' );

		//默认显示
		if ( !Yii::$app->request->isPost ) {
			return $this->render( 'login', [ 'model' => $model ] );
		}

		//接收参数并验证
		if ( $model->load( $post = Yii::$app->request->post() ) && $model->validate() ) {
			echo '跳转到用户中心去';
		}
		var_dump($model->getErrors());

model部份


    //设置场景
    public function scenarious()
    {
        return [
            'login' => 'mobilenumber,password',
            'register' => 'mobilenumber,email,password,sex',
        ];
    }
    public function rules()
    {
        return [
            [ [ 'mobilenumber', 'password' ], 'required', 'on' => 'login' ],
            [ [ 'password' ], 'validatePassword', 'on' => 'login' ],
        ];
    }

view代码

<?php $form = ActiveForm::begin( [
          'id' => 'login',
          'enableAjaxValidation' => true,
          'validationUrl' => Url::toRoute( [ 'validate-form' ] ),
        ] ); ?>
                      <?= $form->field( $model, 'mobilenumber' )->textInput( [ 'placeholder' => 'Username', 'class' => 'form-control input-lg' ] )->label(false); ?>

                    
                       <?= $form->field( $model, 'password' )->passwordInput( [ 'placeholder' => 'Password', 'class' => 'form-control input-lg' ] )->label(false); ?>
<?= Html::submitButton( 'Login', [ 'class' => 'btn btn-primary' ] ); ?>
        <?php ActiveForm::end(); ?>

结果点击login以后,跳转页面打印出errors

 array(1) { ["password"]=> array(1) { [0]=> string(31) "Incorrect username or password." } }

求解呐~

補充樓上
建議 看一下 scenarios 的實作, (底下有附上連結)
你的 methodName 好像也拼錯
而且 scenarios 內部的情境應該是接陣列巴 (字串我是沒用過~~)
http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
你的那个控制器中,设置场景,场景名与数据中的不匹配, 然后, 先打印是否post传值存在,然后判断load加载是否成功,然后判断validate()是否成功; “Incorrect username or password”:用户名或密码错误

赞(0) 打赏
未经允许不得转载:菜鸟之家 » rules自己写的规则失效[2.0]

评论 抢沙发

登录

找回密码

注册