如果你知道数组的内容
您可以这样做并使用DetailView 的功能,尤其是。形成。我稍微增强了你的数据。只需将代码复制到视图文件中即可快速获得印象。
$myArray = [
'name' => 'bert',
'age' => 42,
'My email address' => 'my-email@example.com', //no problems with spaces in the key
'html' => '<div style="font-size: 2em">asdf</div>',
];
echo \yii\widgets\DetailView::widget([
'model' => $myArray,
'attributes' => [
'name',
'age',
'My email address:email',
'html',
'html:html',
'html:html:Html with different label',
[
'label' => 'Html self defined',
'attribute' => 'html', // key in model
'format' => 'raw'
]
]
])
属性是指模型的键。
看看here如何使用属性。
如果数组是动态的
即您不知道内容并获取不同类型的数据,您可以使用 DetailView 默认格式(即格式为'text')。最简单的方式是:
echo \yii\widgets\DetailView::widget([
'model' => $myArray,
'attributes' => array_keys($myArray),
]);
如果你想或多或少控制格式,使用可能要使用这个,使用格式'raw':
echo \yii\widgets\DetailView::widget([
'model' => $myArray,
'attributes' => array_map(function ($key) {
return "$key:raw";
// or build some logic for the right format
// e.g. use '$key:email' if key contains 'email'
}, array_keys($myArray)),
]);
关于您回答中本地化标签的要求,您可以这样做(使用默认的“文本”格式):
echo \yii\widgets\DetailView::widget([
'model' => $myArray,
'attributes' => array_map(function ($key) {
return $key . ':text:' . Yii::t('app', 'label-' . $key);
}, array_keys($myArray)),
]);
但是,请注意,如果 'label-' . $key 不存在,则可能需要一些进一步的逻辑。否则 label-somekey 将显示在 DetailView 中。