在我的系統,用戶可以創建自己想要的名字列,所以我保存列名到數據庫如何知道列名上yii2的GridView
我使用的列選項驗證碼:
foreach((new Field)->listFields as $item){
data = [
'attribute' => $item->name,
'value' => function($model){
return $model->$item->name; // the problem is here, $item->name is out of the scope
},
];
array_push($columns, $data);
}
return $this->render('index', [
'model' => $model,
'dataProvider' => $dataProvider,
'columns' => $columns,
]);
這是我的索引視圖:
<?= \yii\grid\GridView::widget([
'dataProvider' => $dataProvider,
'formatter' => ['class' => 'yii\i18n\Formatter'],
'columns' => $columns,
]); ?>
我想使用的價值,因爲我想對數據進行格式化,如果$用品 - >類型是X或Y 例如:
'value' => function($model){
if($item->type == 'img'){
return Html::img($model->$item->name),
else {
return $model->$item->name;
}
},
的listField的返回僅僅是一個數組:
Array
(
[0] => stdClass Object
(
[name] => ITEM_1
[type] => txt
)
[1] => stdClass Object
(
[name] => IMAGE_1
[id] => img
)
[2] => stdClass Object
(
[name] => IMAGE_2
[id] => img
)
)
和在dataProvider中SQL的返回
Array
(
[0] => Array
(
[ITEM_1] => Item 1 blablabla
[IMAGE_1] => http://url.jpg
[IMAGE_2] => http://url2.jpg
[id] => 1
)
)
正如我使用動態列,我不能t硬編碼列名像$ mode-> IMAGE_1
請出示你的模型(場)和所有的動作代碼 – scaisEdge
爲什麼你$ this->渲染中的$模型? – scaisEdge
可以像表單一樣傳遞此GridView中未使用的其他變量。 – ricardo