我使用的是Yii 1.1.15,在我的 ClistView 中,我有一些可排序的属性。哪个工作正常,问题是测试没有从我的模型类中的attributeLabels()
读取。
$dataProvider=new CSqlDataProvider($sql, array(
'params'=> array(':lat' => $lat, ':lng'=>$lng, ':radius'=>$radius),
'totalItemCount'=>$count,
'sort'=>array(
'defaultOrder'=>'distance ASC',
'attributes'=>array(
'store','state','distance'
),
),
'pagination'=>array(
'pageSize'=> $perPage,
),
)
);
我必须在下面更改它才能工作。
'attributes' => array(
'store'=>'Store Name',
'state'=> 'State',
'distance'=>'Distance to Store'
),
知道我错过了什么吗?
这是我模型中的attributeLabels()
public function attributeLabels(){
return array(
'id' => 'ID',
'store' => 'Store Name',
'address' => 'Address',
'city' => 'City',
'state' => 'State',
'country' => 'Country',
'descscription' => 'Description',
'ip' => 'Ip',
'distance'=>'Distance to Store'
);
}
以下是store.php
模型中state
模型中的关系
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'_state' => array(self::BELONGS_TO, 'state', 'state'),
'_contact' => array(self::HAS_MANY, 'StoreContact', 'store_id'),
);
}
答案 0 :(得分:0)
CActiveDataProvider
和CSqlDataProvider
之间存在巨大差异:
<强> CActiveDataProvider 强>
CActiveDataProvider基于ActiveRecord实现数据提供程序。
<强> CSqlDataProvider 强>
CSqlDataProvider基于纯SQL语句实现数据提供程序。
因此,当您使用CSqlDataProvider
时,模型将没有任何角色,您的数据提供者将不会查找任何模型。
但是,如果您想使用模型属性,可以在CSqlDataProvider
中使用键值数组,如下所示:
'attributes' => array(
'store'=> StoreModel::model()->getAttributeLabel('store'),
'state'=> StoreModel::model()->getAttributeLabel('state'),
'distance'=> StoreModel::model()->getAttributeLabel('distance'),
),
请注意,我认为您的模型名称为StoreModel