2017-06-27 3 views
1

Wie kann man ein assoziatives Array am einfachsten in einem Tabellenformat anzeigen?Yii2: assoziatives Array anzeigen

Das Array ist definiert als

$data = [ 'name' => 'bert', 'age' => 42 ]; 

Gültigkeitsprüfung nicht erforderlich ist. Die Ausgabe sollte wie eine GridView aussehen (ein Schlüssel/Wert pro Zeile), aber ein GridView benötigt ein Modell.

Also könnte ich DynamicModel, ArrayDataProvider oder andere Yii2 Zeug verwenden.

Ich habe viel versucht, aber es sollte einen einfachen Weg geben, dies zu tun.

Antwort

0

Haben Sie eine Lösung gefunden, die sogar mit Attributen funktioniert, die übersetzt werden, aber ist es "die einfachste"?

In Controller-Datei:

class MyDynModel extends \yii\base\DynamicModel { 
    public function generateAttributeLabel($name) { 
     return Yii::t('app','label-'.$name); 
    } 
} 

class MyController extends Controller { 
    public function actionShow() { 
     $data = [ 'name' => 'bert', 'age' => 42 ]; 
     $dataModel = new MyDynModel($data); 
     return $this->render('myview', ['dataModel'=>$dataModel]); 
    } 
} 

Im Hinblick Datei "my/myview.php":

echo \yii\widgets\DetailView::widget(['model'=>$dataModel]); 

In Übersetzungsdatei "-Nachrichten/en/app.php":

return [ 
    'label-name' => 'Name', 
    'label-age' => 'Age (in Years)', 
]; 
+0

IMHO wäre es schön, eine Callback-Funktion zu machen, die die Etiketten definiert. Dies würde das Unterklassifizieren des DynamicModels vermeiden. – WeSee

+0

mit ArrayDataProvider mit Gridview wäre eine einfache und einfache Möglichkeit, dies zu tun. –

+0

Ok, aber eine Detailansicht erfordert ein Modell als Datenquelle AFAIK. Wie bringt man das zusammen? – WeSee