Yii2:页面加载'$ model not defined'时出错

时间:2014-12-08 12:57:52

标签: yii2

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

<?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]);
    }
}

我已将产品页面重命名为信息中心,以便更好地理解。

现在我跑这个&amp;登录,地址栏网址显示网址:.... / web / index.php?r =网站/登录,而它应该显示url:.... / web / index.php?r = site / dashboard&amp ;向我展示了仪表板的视图。

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

2 个答案:

答案 0 :(得分:0)

您必须将$ model发送到视图。如果您将变量发送给它,视图只会知道变量。

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

修改
你的整个思维方式都很奇怪。为什么你会根据这个人是否注册而显示不同的观点?

返回$ this-&gt;渲染('dashboard',['teams'=&gt; $ teams]); 返回$ this-&gt; render('login',['model'=&gt; $ model]);

用户重定向参数以将客户移至另一页。像/ login那样实际显示仪表板的URL是不合逻辑的。

答案 1 :(得分:0)

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