首页 > 在Yii2框架中,当一个页面出现两个表单时,应该怎么做?

在Yii2框架中,当一个页面出现两个表单时,应该怎么做?

在我的项目中,有一个登录页面,最初只有一种登录方式:通过手机号登录。那时候,我是这样做的。

控制器里的action代码如下:

    /**
     * 用户登录的操作
     */
    public function actionLogin() {
        $this->layout = 'base';

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->redirect(['site/index']);
        } else {
            return $this->render('login', [
                'model' => $model,
            ]);
        }
    }

视图文件的关键代码如下:

        <?php $form = ActiveForm::begin([
            'enableClientValidation' => false,
        ]); ?>
        <?= $form->field($model, 'phone', [
            'options' => [
                'class' => 'form-group form-group-lg'
            ],
            'inputTemplate' => '<div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-phone"></i></span>{input}</div>',
        ])->label(false)->error(false) ?>
        <?= $form->field($model, 'code', [
            'options' => [
                'class' => 'form-group form-group-lg'
            ],
            'inputTemplate' => '<div class="input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>{input}<span class="input-group-btn"><button id="send-sms-btn" class="btn btn-default btn-lg" type="button">发送验证码</button></span></div>'
        ])->label(false)->error(false) ?>
        <?= $form->field($model, 'remember')->checkbox() ?>
        <div class="form-group form-group-lg">
            <?= Html::submitButton('登录', ['class' => 'btn btn-default btn-lg btn-block']) ?>
        </div>
        <?php ActiveForm::end(); ?>

还有一个model类(MobileLoginForm)我就不贴代码了。

但现在需求改变了,要加一种登录方式:使用用户名和密码登录。

在布局上,我使用了两个选项卡来做,每个选项卡里使用一个表单,也就是在这个登录页面出现了两个表单,自然就又多了一个对应的model类( AccountLoginForm)。

但随即问题就出现了,我不知道怎么在一个页面里使用两种 model 类。
所以还请大家指教下,谢谢!


我觉得这样最简洁:

一个页面使用两个ActiveForm, 分别指定不同的action(html中form的属性)提交到不同的Action(Controller下的一个方法)


没有办法,最后还是改为了通过 ajax 来进行两种方式的登录。

【热门文章】
【热门文章】