如何从Yii 1.1布局文件中显示模型中的数据?

时间:2016-07-26 22:24:06

标签: layout yii model

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

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

有两种可能性浮现在脑海中:

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

  2. 在其子类中覆盖 CController render 方法。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

echo $this->test;

在行动中操纵:

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

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

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

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