CDetailView為某個Model顯示詳細內容。這個要顯示的Model可以為CModel或是關聯數組。
CDetailView通過配置 attributes來決定Model的那些屬性需要顯示已經以何種格式顯示。
每個屬性可以使用Name:Type:Label來配置。其中 Type和Label都是可選的。
“Name” 屬性名稱.
“Label” 可以選,屬性的標簽名,如果沒有配置,則使用屬性名稱 做為標簽名稱.
“Type” 屬性的類型,通過類型來決定顯示的格式 formatter.可以使用的類型有 raw, text, ntext, html, date, time, datetime, boolean, number, email, image, url. 等,缺省使用text.
本例修改上例Yii Framework 開發 教程(30) Zii組件-ListView 示例 ,修改顯示列表的列表項模版_view.php ,使客戶名稱由普通文字變為Link。
<h3><?php echo CHtml::link($data->FirstName . ' ' . $data->LastName,
$this->createUrl('view',array('CustomerId'=>$data->CustomerId)));?></h3>
當點擊客戶姓 名時,轉到鏈接view.php, 傳入參數CustomerId設為Customer 的ID。
創建View.php,使用CDetailView組件
<h2><?php echo 'View Customer'; ?></h2>
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'FirstName',
'LastName',
'Company',
'Address',
'City',
'State',
'Country',
'PostalCode',
'Phone',
'Fax',
'Email',
array(
'name'=>'Employee',
'value'=>$model->employee->FirstName,
),
),
));
?>
使用缺省的格式顯示Customer的每個字段,主要的Employee字段,表Customer定義的是SupportRepId做為外鍵參 考Employee,因此修改類Customer定義Relations,參考Yii Framework 開發教程(27) 數據庫-關聯Active Record示例
public function relations()
{
return array(
'employee'=>array(self::BELONGS_TO,
'Employee', 'SupportRepId'),
);
}
顯示結果如下:

本例下載:http://www.imobilebbs.com/download/yii/DetailViewDemo.zip