今天当我翻阅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, 这里还能得到对关联表的支持,是不是感觉这种方法更亲切点呢