2014-12-12 3 views
1

에 필드를 연결할은 다음과 같이 정의 선택 :X-편집 : 드롭 다운과 EditableColumn와 나는 CGridView이 드롭 다운

public function actionGetDepartments(){ 
    $models = Department::model->findAll(); 
    echo CJSON::encode(Editable::source($models, 'Id_department', 'Name')); 
    Yii::app()->end(); 
} 

이를 : 컨트롤러에서이 작업에

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), 
    ), 
); 

코드는 사용자가 각 옵션에서 볼 수있는 문자 그대로 이름이 인 드롭 다운 선택을 만듭니다.

생각할 것은 하나뿐 아니라 다양한 속성을 표시해야하므로 source() 함수의 단일 문자열에서 해당 필드를 연결하는 함수에 함수 호출을 넣으려고했으나 그렇지 않습니다. 작품 :

Editable::source($models, 'Id_department', concatenate()) 

어떤 방법이 있습니까?

답변

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

나는 더 나은 방법을 찾고 있지만 지금은 효과가있다.