【问题标题】:How to use 2 form tag in same page in Yii如何在 Yii 的同一页面中使用 2 个表单标签
【发布时间】:2016-07-11 06:59:40
【问题描述】:

在 Yii 的前端, 我有两种形式: 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---------->

【问题讨论】:

  • 请也显示您的代码!
  • 您是否从控制器传递了$modelLogin?请也显示您的控制器登录操作。
  • 公共函数 actionIndex() { if(isset($_REQUEST['signup'])) { $modelSignup = new SignupForm(); return $this->render('index',[ 'modelSignup' => $modelSignup, ]); } else{ $modelLogin = new LoginForm(); return $this->render('index',[ 'modelLogin' => $modelLogin, ]); } }
  • 嗨@ErSahajArora,实际上你的主要问题是什么......分享代码
  • @SherinJose ;您好 Sherin,我的问题是如何在同一页面上使用多个表单,我必须在前端的索引页面上使用表单,但是一个表单正在工作,但在使用另一种表单时会出错:调用成员函数 formName()在 null ,,, 所以我的问题是如何在 php & Yii2 中使用多种形式

标签: php yii yii2 yii2-advanced-app


【解决方案1】:

试试这个:

控制器:

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

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

if(isset($modelLogin)

【讨论】:

  • ............. 由该代码登录表单不显示,因为该代码意味着当我们单击登录时,该时间将显示表单
  • 在 index.php 中我有 2 个表单,即我输入查询的代码 alery
  • 有人帮忙吗??
  • @ErSahajArora 还是同样的问题?
【解决方案2】:

在您的视图文件中,您使用两个模型,一个用于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 ]); 
}

这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 2017-12-19
    • 2017-04-22
    • 2012-08-17
    • 1970-01-01
    • 2011-06-27
    • 2016-03-26
    • 2012-01-16
    相关资源
    最近更新 更多