如何在Yii的同一页面中使用2表格标签

时间:2016-07-11 06:59:40

标签: php yii yii2 yii2-advanced-app

在Yii的前端,    我有2个表格:             1登录表格             2注册    我的注册表单正在运行,但是当登录不起作用时,      我发现了一个错误      在null

上调用成员函数formName()

//表单代码

<!-------signup---------->
<h1>Signup  Form</h1>
<?php $form = ActiveForm::begin(['id' => 'form-signup', 'action' => Url::to(['site/signup'])]); ?>
    <?= $form->field($modelSignup, 'username')->textInput(['autofocus' => true]) ?>
    <?= $form->field($modelSignup, 'email') ?>
    <?= $form->field($modelSignup, 'password')->passwordInput() ?>
    <?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
<?php ActiveForm::end(); ?>
<!-------// signup---------->

<!-------login---------->
<h1>Login  Form</h1>
<?php $form = ActiveForm::begin(['id' => 'form-login', 'action' => Url::to(['site/login'])]); ?>
    <?= $form->field($modelLogin, 'username')->textInput(['autofocus' => true]) ?>
    <?= $form->field($modelLogin, 'email') ?>
    <?= $form->field($modelLogin, 'password')->passwordInput() ?>
    <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
<?php ActiveForm::end(); ?>
<!-------//login---------->

2 个答案:

答案 0 :(得分:0)

试试这个:

控制器:

public function actionIndex() { 
       $modelSignup = new SignupForm(); 
       $modelLogin = new LoginForm();      
       return $this->render('index',[ 'modelSignup' => $modelSignup,'modelLogin' => $modelLogin ]);        
 }

同时从代码中删除此检查:

if(isset($modelLogin)

答案 1 :(得分:0)

在您的视图文件中,您使用的是两个模型,一个用于signup,另一个用于login。但是从你的评论我注意到你一次只传递一个模型,它可能是第一个或第二个。因此,您应该使用以下代码替换actionIndex()

public function actionIndex() {
    $modelSignup    = new SignupForm();
    $modelLogin     = new LoginForm();
    if(isset($_POST['SignupForm'])) {
        //code for signup process
    }

    if(isset($_POST['LoginForm'])) {
        //code for login process
    }

    return $this->render('index', [ 'modelSignup' => $modelSignup, 'modelLogin' => $modelLogin ]); 
}

这会对你有帮助。