大家好,我接触Yii不久,不是很清楚如何做到rend侧边栏。
侧边栏的内容有需要从数据库读取的,现在controller里能提供dataprovider得到。
controllers/UserController.php:
$feedDataProvider=new CActiveDataProvider('Feeds', array(
'criteria'=>array(
'condition'=>"UID=$id",
'order'=>'FEED_TIME DESC',
),
'pagination'=>array(
'pageSize'=>10,
),
));
$feedUser = $feedDataProvider->getData();
$this->render('index',array(
'dataProvider'=>$dataProvider,
'feedUser'=>$feedUser,
));
在view中把数据存到sidebar变量中,这是我在components/Controller.php中加的一个私有变量(参照Yii menu的做法):
views/user/index.php
$feed = array();
for ($i = 0; $i < count($feedUser); ++$i){
$feed[$i] = User::model()->findByPk($feedUser[$i]->UID)->EMAIL;
}
$this->sidebar=array(
'feedAmt'=>count($fedUser),
);
布局比较复杂,不能通过简单的Yii widget实现,在layout中读取$feed变量:
<div id="sidebar">
...<?php echo $this->sidebar['feed'][0];?>
...
</div>
这样访问index.php/user能有预期的侧边栏效果,但是index.php/user/1报错
找不到$this->sidebar[‘feed’][0]变量
所以我是不是一开始的方向就错了?是不是应该用rendPartial?但是这个好像就没法跟布局关联起来了,我希望得到一个数组,并在侧边栏布局的不同地方显示。应该如何做到呢?
麻烦附上具体的demo代码,谢谢!