Yii2 GridView将列内容数据与其他控制器呈现的参数

时间:2015-12-01 06:34:47

标签: gridview yii2 yii2-advanced-app yii2-model

我创建了一个Yii2 Gridview小部件,我想显示" V"仅在行上标记等于从控制器传递的另一个渲染变量:

        <?=
             GridView::widget([
                               'dataProvider' => $dataProvider,
                               'filterModel' => $searchModel,
                                'columns' => [
                                        [
                                            'header' => 'Default',
                                            'content' => function ($model) {
                                              if ($model->id == $selected) {
                                                return Html::tag('i','',['class' => 'fa fa-check']);
                                              }
                                              return '';
                                            }
                                        ],

从控制器传递:

    return $this->render('index', [
        'selected' => $selected,
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);

但我收到一个错误:

  

未定义的变量:已选择

我错过了什么?

1 个答案:

答案 0 :(得分:3)

变量$selected不存在于匿名函数的范围内。来自php.net page for anonymous functions

  

闭包还可以从父作用域继承变量。任何此类变量都必须传递给use语言构造。

即:

'content' => function ($model) use ($selected) { ...