Auf meinem System wissen, kann der Benutzer die Spalt mit dem Namen erstellen sie wollen, so ich spare die Spaltennamen in der DatenbankWie die Spaltennamen auf yii2 Gridview
ich auf Spaltenoptionen diesen Code verwende:
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,
]);
dies ist meine Indexansicht:
<?= \yii\grid\GridView::widget([
'dataProvider' => $dataProvider,
'formatter' => ['class' => 'yii\i18n\Formatter'],
'columns' => $columns,
]); ?>
ich mag den Wert verwenden, da ich die Daten zu formatieren möchte, wenn die $ item-> Typ X oder Y ist ex:
'value' => function($model){
if($item->type == 'img'){
return Html::img($model->$item->name),
else {
return $model->$item->name;
}
},
die Rückkehr des Listfield ist nur ein Array:
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
)
)
und die Rückkehr des SQL in Datenprovider ist
Array
(
[0] => Array
(
[ITEM_1] => Item 1 blablabla
[IMAGE_1] => http://url.jpg
[IMAGE_2] => http://url2.jpg
[id] => 1
)
)
Wie ich dynamische Spalte verwendet, kann ich‘ t codieren die Spaltennamen wie $ mode-> IMAGE_1
bitte zeigen Sie Ihr Modell (Field) und der gesamte Code Aktion ist – scaisEdge
, warum Sie haben $ modell in $ this-> render? – scaisEdge
andere Variablen in diesem Gridview nicht wie ein Formular verwendet passieren. – ricardo