我不知道这是否可能,但假设它必须是。我需要在前端视图中显示一些数据 - 以表格形式列出的公司列表:公司名称 1 - 国家 1 - 网站 1 - 等等......公司名称 2 - 国家 2 - 网站 2 - 等等......等等......我正在尝试为此目的使用 CGridView。
我的控制器:
public function actionList()
{
$sort = new CSort();
$sort->attributes = array(
'defaultOrder'=>'company_name DESC',
'company_name'=>array(
'asc'=>'company_name ASC',
'desc'=>'company_name DESC',
),
'country'=>array(
'asc'=>'country ASC',
'desc'=>'country DESC',
),
);
$criteria = new CDbCriteria();
$criteria->order = "company_name DESC";
$criteria->condition = 'approve = :approve';
$criteria->params = array(':approve'=>1);
$dataProvider = new CActiveDataProvider('EuCompanies', array('criteria'=>$criteria,'sort'=>$sort));
$this->render('list',
array('dataProvider'=>$dataProvider,
));
}
我的观点:
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'columns'=>array(
'company_name',
'country',
'company_website',
'economic_sector',
'contact_person',
'email',
'phone_number'
),
));
?>
输出是一个很好的网格,它考虑了选择标准,以及可单击的“公司名称”和“国家”,但单击它们不会使列排序。我想这是因为在 dataProvider 中不使用 $model->search() 就无法进行排序,或者我只是做错了什么?