我想在DetailView中隐藏属性,例如:
[
'attribute' => $attribute,
'format' => 'raw',
'value' => Yii::$app->formatter->asDatetime($model->$attribute).' par '.Yii::$app->myFormatter->asUser($model->visited_by),
'visible' => false,
];
可见属性不起作用。我该怎么办?
你有什么想法吗?
谢谢
答案 0 :(得分:0)
如果你需要动态确定什么是visible
然后,您可以尝试使用te {Detail}模型的template
选项
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'title',
'group_id',
],
'template' => function ($item, $index, $widget){
$classes = '';
$classes .= ($item['attribute'] == 'your-attr' && $item['value'] == 'your-value') ? 'hidden' : '';
return "<tr class='$classes'><th>$item[attribute]</th><td>$item[value]</td></tr>";
}
]) ?>
如果您知道不会使用甚至不需要这些隐藏值,您还可以通过动态确定传递给DetailView的属性,如:
<?php
// your logic to know what attributes display
echo DetailView::widget([
'model' => $model,
'attributes' => $attributes
]) ?>
答案 1 :(得分:0)
您可以使用kartik's GridView以及引导类hidden
和show
。请参阅Bootstrap docs。
use kartik\detail\DetailView;
....
[
'attribute' => $attribute,
'format' => 'raw',
'value' => Yii::$app->formatter->asDatetime($model->$attribute).' par '.Yii::$app->myFormatter->asUser($model->visited_by),
'rowOptions' => [
'class' => ($i_want_to_see_it ? 'show' : 'hidden'),
],
];