我创建了一个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,
]);
但我收到一个错误:
未定义的变量:已选择
我错过了什么?
答案 0 :(得分:3)
变量$selected
不存在于匿名函数的范围内。来自php.net page for anonymous functions:
闭包还可以从父作用域继承变量。任何此类变量都必须传递给
use
语言构造。
即:
'content' => function ($model) use ($selected) { ...