简体   繁体   English

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

[英]Yii framework pass variable from controller to view

To pass variable to login view I use: 要将变量传递给登录视图,我使用:

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

But I also need acces this variable in template part footer.php: 但我还需要在模板部分footer.php中访问此变量:

I try this: 我试试这个:

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

But when in footer.php I try acces variable I get error "undefined variable" 但是在footer.php中我尝试访问变量我得到错误“未定义变量”

What is wrong ? 怎么了 ?

You can use controller class to pass variables in view template, for example 例如,您可以使用控制器类在视图模板中传递变量

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 : 在视图模板文件中,您可以使用其名称访问这两个变量($ var1&$ var2):

 echo $var1; echo $var2 

Templates in yii are getting data from controller by $this reference. yii中的模板通过$this reference从控制器获取数据。

<?php
SomeController extends Controller {
    public $something;

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

In template: 在模板中:

<?php echo $this->something; ?>

Please take a look on default templates of yii. 请查看yii的默认模板。 Breadcrimbs are displayed using property from controller, so this is propably the best way to achieve it. 使用来自控制器的属性显示面包屑,因此这是实现它的最佳方式。

mvc structure not redirect direct page. mvc结构不重定向直接页面。

you create first footer action and after redirect to page. 您创建第一个页脚操作和重定向到页面后。

you see demo show login action in site_controller.php 你在site_controller.php中看到demo show login action

follow this 按照这个

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM