2016-07-26 78 views
1

我想让布局反映模型中的一些数据。然而,类仅将结构化数据传递给视图文件,而布局文件仅获取传递的渲染视图。如何显示来自Yii 1.1布局文件的模型数据?

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

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

  1. 让Yii中的布局从视图手动档无操作,极似布局逻辑。

  2. 覆盖CController呈现它的子类方法。

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

回答

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)); 
相关问题