我有一个带有EditableColumn的CGridView,其下拉选项定义如下:
array(
'name' => 'Id_department',
'header'=> 'Department',
'value' => '$data->Id_department ? Department::model()->findByPk($data->Id_department)->getConcatened() : "[click to edit]"',
'class' => 'editable.EditableColumn',
'editable' => array(
'type' => 'select',
'model' => new Employee(),
'url' => $this->createUrl('employee/update'),
'source' => $this->createUrl('department/getDepartments'),
'params' => array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
),
);
在控制器中执行此操作:
public function actionGetDepartments(){
$models = Department::model->findAll();
echo CJSON::encode(Editable::source($models, 'Id_department', 'Name'));
Yii::app()->end();
}
此代码使用名称属性构建下拉列表选择,作为用户在每个选项上看到的文字。
我认为我必须显示各种属性,而不仅仅是一个属性,因此我尝试将函数调用放在一个函数中,该函数在source()函数的单个String中连接该字段,但它不起作用:
Editable::source($models, 'Id_department', concatenate())
有没有办法做到这一点?
答案 0 :(得分:0)
我终于找到了一个解决方案(显然不是最好的解决方案,但目前很有用)。
基本上,我正在做的是在模型上添加一个名为$concatenate_field
的新属性,并将其全部放入其中。然后,我可以在函数调用上使用该字段。
public function actionGetDepartments(){
$models = Department::model->findAll();
foreach($models as $model){
$model->concatenated_field = $model->getConcatened();
}
echo CJSON::encode(Editable::source($models, 'Id_department', 'concatenated_field'));
Yii::app()->end();
}
我仍然在寻找一种更好的方法来做到这一点,但到目前为止。