x-editable for yii:连接下拉列表中的字段

时间:2014-12-12 13:10:30

标签: php yii x-editable

我有一个带有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())

有没有办法做到这一点?

1 个答案:

答案 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();
}

我仍然在寻找一种更好的方法来做到这一点,但到目前为止。