2017-06-27 19 views
1

連想配列をテーブルスタイルで表示する最も簡単な方法は何ですか?Yii2:表示連想配列

アレイは

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

入力検証が必要とされないと定義されます。出力はGridView(1行に1つのキー/値)のように表示されますが、GridViewにはモデルが必要です。

DynamicModel、ArrayDataProvider、またはその他のYii2のものを使用できます。

私はたくさん試しましたが、これを行うための簡単な方法があるはずです。

答えて

0

翻訳された属性ラベルでも機能する解決策が見つかりましたが、「最も簡単なのですか?コントローラファイルで

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]); 
    } 
} 

ビューファイルには、 "私の/ myview.php":翻訳ファイル "/ EN/app.phpメッセージ" では

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

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

IMHOラベルを定義するコールバック関数を作成するとよいでしょう。これにより、DynamicModelのサブクラス化が回避されます。 – WeSee

+0

ArrayDataProviderをgridviewで使用するのは、簡単で簡単な方法です。 –

+0

しかし、DetailViewでは、データソースAFAIKとしてモデルが必要です。これを一緒にする方法? – WeSee