【问题标题】:Yii framework pass variable from controller to viewYii 框架将变量从控制器传递到视图
【发布时间】:2014-11-17 13:26:24
【问题描述】:

要将变量传递给我使用的登录视图:

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

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

我试试这个:

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

但是当我在 footer.php 中尝试访问变量时,我得到错误“未定义的变量”

怎么了?

【问题讨论】:

    标签: php templates yii variable-assignment


    【解决方案1】:

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

    控制器:

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

    在视图模板文件中,您可以使用其名称访问这 2 个变量($var1 和 $var2):

    echo $var1; 
    
    echo $var2 

    【讨论】:

      【解决方案2】:

      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 变量不在任何地方声明
      • 我猜你没有理解问题或答案。 OP 已经有了$model 并询问如何将其传递给视图。这不是完整的控制器代码。再次阅读文本。 PS。这是 2014 年公认的答案——近 5 年没有人抱怨它的正确性。也许你是做错事的人?
      【解决方案3】:

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

      您创建第一个页脚操作并在重定向到页面之后。

      您在 site_controller.php 中看到演示显示登录操作

      关注这个

      【讨论】:

      • 会话中设置的登录变量
      • 不,这不是解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多