1
我想让布局反映模型中的一些数据。然而,类仅将结构化数据传递给视图文件,而布局文件仅获取传递的渲染视图。如何显示来自Yii 1.1布局文件的模型数据?
那么,如何最好地从模型中显示布局数据?
两种可能性浮现在脑海中:
让Yii中的布局从视图手动档无操作,极似布局逻辑。
覆盖CController的呈现它的子类方法。
我对任何一个变体都不那么满意,所以也许有人对如何做到这一点有更清晰的想法?
我想让布局反映模型中的一些数据。然而,类仅将结构化数据传递给视图文件,而布局文件仅获取传递的渲染视图。如何显示来自Yii 1.1布局文件的模型数据?
那么,如何最好地从模型中显示布局数据?
两种可能性浮现在脑海中:
让Yii中的布局从视图手动档无操作,极似布局逻辑。
覆盖CController的呈现它的子类方法。
我对任何一个变体都不那么满意,所以也许有人对如何做到这一点有更清晰的想法?
另一种方式是在控制器类中定义一个公共变量,是这样的:
class MyController extends Controller {
public $test = 'foo';
....
这个值可以再布局内访问:
echo $this->test;
而且在动作操作:
public function actionMyaction(){
$this->test = "bar";
...
显然,如果你有很多变量需要你在布局中。一种解决方案是使用一组参数。或者,您可以考虑使布局更为简单,并使用CWidget
来创建可重用组件,以便在视图中使用。例如,你显然不希望你的主导航的代码在每个视图内都被复制,所以显而易见的解决方案是在布局中,但是如果处理数据变得不方便,你可能需要一个一个小部件的实例,呈现出每个视图内的导航(并且您可以将数据传递到CWidget
类),如下所示:
$this->widget("MainNavigation",array("params"=>$params));