将ActiveForm放在Gridview列Yii2中

时间:2015-09-03 07:47:16

标签: yii2 yii2-advanced-app

如何将ActiveForm放入gridview列?以下是我制作的代码:我尝试渲染页面,使其包含我需要的活动表单。

'columns' => [
        [   'format' => 'html',
            'value'=>  function($data) { return Html::img($data->imageurl) . " <p class='feedback-username'>" . $data->username . "</p>"; },
            'contentOptions'=>['style'=>'width: 30px; height: 30px'],
        ],

        [   'format' => 'raw',
            'value' => function($model) { return "<p class='feedback'>". $model->KOMENTAR  ."</p><br><p class='feedback-date'>". $model->TANGGAL ."</p><hr><div id='replay-". $model->ID_KOMENTAR."'><ul></ul></div>";},
        ],
        [   'format' => 'raw',
            'contentOptions'=>['style'=>'width: 5px;'],
            'value' => function($model) {
                if($model->id == Yii::$app->user->identity->id) {
                    return  Html::a('<i class="glyphicon glyphicon-share-alt"></i>',null,['id'=> 'replay-to-'. $model->ID_KOMENTAR ]).' '. 
                            Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id]).' '.
                            Html::a('<i class="glyphicon glyphicon-trash"></i>', ['delete', 'id' => $model->id], ['data' => ['confirm' => 'Do you really want to delete this element?','method' => 'post']]);
                }
                return Html::a('<i class="glyphicon glyphicon-share-alt"></i>',['feedback', 'id' => $model->id],['id'=> 'replay-to-'. $model->ID_KOMENTAR ]);
            },
        ],
        [

            'content' => $this->render('feedback_test'),
        ], 

但我收到了这个错误:

PHP Warning – yii\base\ErrorException
call_user_func() expects parameter 1 to be a valid callback, function '
<div class="feedback-form">

 <p>test</p>
 </div>' not found or invalid function name

如何在网格视图的列中包含活动表单?

2 个答案:

答案 0 :(得分:2)

试试这个。

[
   'content' => function($model, $key, $index, $column) {
                         echo $this->render('feedback_test');
                         OR
                         echo $this->render('feedback_test', ['model' => $model]); 
                },
],

答案 1 :(得分:0)

上面的答案输出了我网格上方的表格。我希望我的一个列中的表单可用于每行数据。我最终定制了一个像这样的ActionColumn:

[
  'class' => 'yii\grid\ActionColumn',
  'template' => '{map}',
  'contentOptions' => ['class' => 'text-center'],
  'buttons' => [
    'map' => function ($model) use ($m, $r) {
        return $this->render('_form', ['model' => $m, 'req' => $model, 'ref' => $r]);
    },
  ],
  'urlCreator' => function ($action, $model) {
    if ($action === 'map') {
        return $model;
    }
  },