【问题标题】:How to display data from a model from a Yii 1.1 layout file?如何显示来自 Yii 1.1 布局文件的模型数据?
【发布时间】:2016-07-26 22:24:05
【问题描述】:

我想让布局反映模型中的一些数据。但是,CController 类中的 render 方法仅将结构化数据传递给视图文件,而布局文件仅获取已渲染的视图。

那么,如何最好地让模型中的布局显示数据?

想到两种可能性:

  1. 使 Yii 的布局文件成为无操作,从视图中手动模仿布局逻辑。

  2. 在其子类中重写 CController 的 render 方法。

我对这两种变体都不满意,所以也许有人对如何做到这一点有更清晰的想法?

【问题讨论】:

    标签: layout yii model


    【解决方案1】:

    另一种方法是在控制器类中定义一个公共变量,例如:

    class MyController extends Controller {
        public $test = 'foo';
        ....
    

    然后可以在布局中访问该值:

    echo $this->test;
    

    并在一个动作中被操纵:

    public function actionMyaction(){
        $this->test = "bar";
        ...
    

    如果您需要在布局中使用许多变量,显然这并不理想。一种解决方案是使用一组参数。或者,您可以考虑使您的布局更简洁,并使用CWidget 创建可重用的组件以在您的视图中使用。

    例如,您显然不希望在每个视图中都复制主导航的代码,因此显而易见的解决方案是在布局中添加,但如果处理数据变得不方便,您可以拥有一个实例在每个视图中呈现导航的小部件(您可以将数据传递给CWidget 类),例如:

    $this->widget("MainNavigation",array("params"=>$params));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多