【问题标题】:Yii2: getting error while page load '$model not defined'Yii2:页面加载时出错'$model未定义'
【发布时间】:2014-12-08 12:57:51
【问题描述】:

我已经开发了允许所有者创建团队的表格。代码是:

<?php $form = ActiveForm::begin(['id' => 'team-create-form', 'action' => ['site/create-team-form'], 'options' => array('role' => 'form')]);
<div class="col-lg-10 form-group" id="createTeamForm" style="margin-top: 15px;">
<div class="col-lg-4">
<?= $form->field($model, 'team_name',['template' => "{label}\t{input}\n{error}"])->textInput(array('placeholder'=>'Enter team name....')); ?>
 </div>
 <div class="col-lg-4">
  <?= $form->field($model, 'team_description',['template' => "{label}\t{input}\n{error}"])->textInput(array('placeholder'=>'Enter team Description....')); ?>
</div>
 <div class="col-lg-2">
<?= Html::submitButton('Submit', ['class' => 'btn btn-danger', 'id' => 'tsubmit', 'style' =>       'margin-top: 22.5px; margin-right: 15px;']) ?>
 </div>
</div>

我已尝试使用上述代码加载页面,但它显示错误“$model not defined”。如何解决。我需要在 main-local.php 中添加一些东西吗???

public function actionLogin()
{
    $model = new LoginForm();
    $session = Yii::$app->session;
    if ($model->load(Yii::$app->request->post()) && $model->login()) {

        $collection1 = Yii::$app->mongodb->getCollection('users');
        $teamid = $collection1->findOne(array('username' => $model->email_address));

        $session->set('id', $teamid['_id']);
        $session->set('name', $teamid['name']);
        $session->set('username', $model->email_address);

        $collection2 = Yii::$app->mongodb->getCollection('teamdashboard');
        $teams = $collection2->find(array('admin' => $model->email_address));

        $model1 = new TeamCreateForm();
        return $this->render('dashboard', ['model'=>$model1, 'teams'=> $teams]);

    } elseif($session->isActive){
        $username = $session->get('username');
        $collection = Yii::$app->mongodb->getCollection('users');
        $teams = $collection->findOne(array('username' => $username));

        return $this->render('dashboard', ['teams'=>$teams]);

    }else{
        $this->layout = 'index';
        return $this->render('login', ['model' => $model]);
    }
}

为了更好地理解,我已将产品页面重命名为仪表板。

现在,当我运行此程序并登录时,地址栏 url 显示 url:..../web/index.php?r=site/login 而它应该显示 url:..../web/index .php?r=site/dashboard & 显示仪表板的视图。

当我刷新页面时,我将我带回登录...

【问题讨论】:

  • 你要发送 $model 来查看吗??
  • 如果我这样做,我不会将 $model 发送到视图 bcoz,那么地址栏上的 url 将保持与仪表板之前的相同。这会导致问题。
  • 我同意@Mihai,请仔细阅读文档yiiframework.com/doc-2.0/guide-structure-views.html

标签: yii2


【解决方案1】:

您是否在仪表板视图中使用了 $model?如果你这样做 - 你需要传递它(与登录相同)。

【讨论】:

  • 你完全正确。我知道这个。但是当我使用渲染功能这样做时,我在地址栏上遇到了 url 问题,请参阅下面带有 Mihai P 的 cmets。
【解决方案2】:

您必须将 $model 发送到视图。视图只有在您将其发送给它时才知道变量。

我不知道地址栏是什么意思。地址栏与您发送到视图的内容无关。

编辑
你的整个思维方式很奇怪。为什么你会根据这个人是否注册显示不同的视图?

return $this->render('dashboard', ['teams'=>$teams]); return $this->render('login', ['model' => $model]);

用户重定向参数以将客户移动到另一个页面。拥有像 /login 这样实际显示仪表板的 URL 是不合逻辑的。

【讨论】:

  • 没错,但是登录后,当它从 index.php?r=site/login 将我重定向到 index.php?r=site/productpage 时,它​​必须显示 index.php?r=site/产品页面。但在我的地址栏上,它仍然显示 index.php?r=site/login 并显示 productpage 视图的内容。它不应该发生......
  • 你如何重定向,给我们展示控制器功能。
  • 我已经用控制器功能检查更新了问题
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2021-10-26
  • 2017-04-04
  • 2020-12-08
  • 2019-01-23
相关资源
最近更新 更多