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