yii2:在kartik可编辑小部件中获取关系数据

时间:2015-07-24 07:39:16

标签: yii2 yii2-basic-app

我使用kartik yii2可编辑扩展名在gridview中编辑内联 扩展工作正常。
请参阅此屏幕截图链接[http://awesomescreenshot.com/00753dvb73][1]

在此屏幕截图中,source字段是一个下拉列表,我希望source的值代替其id

我的观点

use kartik\editable\Editable;
    [
            'attribute'=>'source',
            'format'=>'raw',
            'value'=> function($data){ 
              //$s = $data->getBacklog_source();//var_dump($s);exit;
             return Editable::widget([
              'name'=>'source',
              'model'=>$data,
              'value'=>$data->source,
              'header' => 'Source',
              'type'=>'primary',
              'size'=> 'sm',
              'format' => Editable::FORMAT_BUTTON,
              'inputType' => Editable::INPUT_DROPDOWN_LIST,
              'data'=>$data->getSource(), // any list of values
              'options' => ['class'=>'form-control', 'prompt'=>'Select Source'],
              'editableValueOptions'=>['class'=>'text-danger'],
              'afterInput' => Html::hiddenInput('id',$data->id),
              ]);
          }
          ], 

我所建立的关系是:

public function getSource()
    {
        $source = BacklogSource::find()->all();
        return ArrayHelper::map($source, 'id', 'Source'); 
    }

    public function getBacklog_complexity()
    {
        return $this->hasOne(BacklogComplexity::className(), [
            'id' => 'complexity'
            ]);
    }

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我得到了类似的解决方案:

[
        'attribute'=>'status',
        'format'=>'raw',
        'value'=> function($data){ 
          $s = BacklogStatus::findOne($data->status);
         return Editable::widget([
          'name'=>'status',
          'model'=>$data,
          'value'=>$s->Status,
          'header' => 'Status',
          'type'=>'primary',
          'size'=> 'sm',
          'format' => Editable::FORMAT_BUTTON,
          'inputType' => Editable::INPUT_DROPDOWN_LIST,
          'data'=>$data->getStatus(), // any list of values
          'options' => ['class'=>'form-control', 'prompt'=>'Select Source'],
          'editableValueOptions'=>['class'=>'text-danger'],
          'afterInput' => Html::hiddenInput('id',$data->id),
          ]);
      }
      ],