今天当我翻阅Yii 代码的时候发现qiang还给我们提供了CDetailView这个类来完成类似的功能。两者到底有什么区别呢? 我们都知道 CGridView是根据数据表结构来生成我们需要的数据,而CDetailView是根据我们平时一直用到的model实例来生成数据。
同样以上一个列子来写,看看有什么不同:
$criteria = new CDbCriteria;
$criteria->select = 'user.id, username, fullname, email, last_login, company.name';
$criteria->order = 'username';
$users = User::model()->with('company')->together()->findAll($criteria);
很容易发现,这是我们以前在写Yii代码中做的最多的事。
$this->widget('zii.widgets.CDetailView', array(
'model' => $users,
'attributes'=>array(
'id',
'username',
'fullname',
'company.name',
array(
'dataField' => 'email',
'dataExpression' => 'CHtml::mailto($data->email)'
),
'last_login',
array('class' => 'CRudColumn', 'header' => '操作')
)
));
在这里我们用CdetailView代替原来的CGridView, 这里还能得到对关联表的支持,是不是感觉这种方法更亲切点呢