26

YII的CListView使用起来很方便,并且它的dataprovider也是可以自定义的。比如想要获取其它表里的内容,可以在controller中这样写:

$dataProvider=new CActiveDataProvider('tableA', array(
			    'criteria'=>array(
					'select'=>'ta.*',
			        'condition'=>'tb.status=1',
					'alias'=>'ta',
			        'order'=>'id DESC',
					'join'=>'JOIN '.tableB::model()->tableName().' ta ON ta.pid=tb.id',
					'with'=>'p',
			    ),
			    'pagination'=>array(
			        'pageSize'=>20,
			    ),
			));

在CListView的view中使用的时候:

echo CHtml::encode($data->id);
echo CHtml::encode($data->p['title']);

注意,“p”是在前面’with’=>’p'中定义的。用以上方法可以大大扩充dataprovier的使用范围。
如果需要更复杂的数据整理,建议自行提取数据放入array,然后再用CArrayDataProvider将Array转化为dataprovider。

Tags:

No Responses

Leave a Response

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">