Yii框架:从控制器传递变量到视图

4

为了将变量传递给登录视图,我使用以下代码:

$this->render('login', array('model' => $model));

但我还需要在模板部分footer.php中访问此变量:

我尝试过这样做:

$this->render('footer', array('model' => $model));

但是当我在footer.php中尝试访问变量时,出现了"未定义变量"的错误。

出了什么问题?

3个回答

7
您可以使用控制器类将变量传递到视图模板中,例如:

Controller :

SomeController extends Controller {
    
    public function actionIndex() {
          $var1 = 'abc';
          $var2 = '123';
           $this->render('view', 
                           array('var1' => $var1,
                                 'var2' => $var2,
                                ));
    }
}

In view template file you can access these 2 variables ( $var1 & $var2) with its name :

echo $var1; 

echo $var2 


5

在Yii中,模板通过引用$this从控制器获取数据。

<?php
SomeController extends Controller {
    public $something;

    public function init() {
        $this->something = 'qwerty';
    }
    public function actionA() {
        $this->render('view', array('model' => $model));
    }
}

在模板中:
<?php echo $this->something; ?>

请查看yii的默认模板。面包屑导航使用控制器的属性显示,因此这可能是实现它的最佳方法。

$model变量没有在任何地方声明 - MH Fuad
我猜你可能没有理解问题或答案。原帖已经有$model,并且问如何将其传递到视图中。这不是完整的控制器代码。请再次阅读文本。另外,这是2014年的一个被接受的答案 - 近5年来没有人抱怨它的正确性。也许你才是做错事情的人? - rzelek

0

MVC结构不直接重定向页面。

您可以创建第一个页脚操作,然后重定向到页面。

您可以在site_controller.php中查看演示显示登录操作。

按照这个步骤进行操作。


登录变量设置在会话中。 - Manish Jesani
1
不,这不是解决方案。 - Wizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接