如何在Yii 2 GridView中通过关系在一列中显示两个属性值

时间:2015-01-13 05:18:05

标签: php gridview yii2

我在索引中有Gridview我想在一列中显示宽度和高度我该怎么做 这是视图代码

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'fld_id',
        'fld_name',
        [
            'label' => 'Material Name',
            'attribute' => 'fld_material_id',
            'value' => 'fldMaterial.fld_name',

        ],
        [
            'label' => 'Size',
            'attribute' => 'fld_size_id',
            'value' => 'fldSize.fld_width',
        ],
        // 'fld_size_id',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>    

我在模型中有关系fldSize这里只显示fld_width我希望以fld_width格式显示它。“x”.fld_height我怎么能在Yii2中这样做

2 个答案:

答案 0 :(得分:14)

您应该只使用value回调,例如:

[
    'label' => 'Size',
    'attribute' => 'fld_size_id',
    'value' => function ($model) {
        return $model->fldSize->fld_width . 'x' . $model->fldSize->fld_height;
    },
],

答案 1 :(得分:1)

很抱歉,经过一年多的时间,但它确实有效(不是下拉菜单,而是Select2)。 这是表单的代码

 <?= $form->field($model, 'ID_MACH')->widget(Select2::classname(), [
      'data'=> ArrayHelper::map(Maschines::find()->all(),'ID_MACH','fullname'), 
     'language'=>'ru',
    'theme'=>'krajee',
    'options'=>['placeholders'=>'suda...',
        'prompt'=>'10-'],
    'pluginOptions'=>[
        'allowclear'=>true
    ],

接下来是Mashines的模型:
     public function getFullName() { return $this->customer.','.$this->Manufacturer.','.$this->type.','.$this->serial;}