2017-01-09 3 views
0

Я хочу, чтобы скрыть атрибут в моем DetailView, например:Скрыть атрибут Картик DetailView Yii 2

[ 
    'attribute' => $attribute, 
    'format' => 'raw', 
    'value' => Yii::$app->formatter->asDatetime($model->$attribute).' par '.Yii::$app->myFormatter->asUser($model->visited_by), 
    'visible' => false, 
]; 

Видимый свойство не работает. Что мне нужно сделать?
У вас есть идея?

Спасибо

+0

Какую версию Yii вы используете? – topher

+0

Версия YII2 с расширением kartik для детального просмотра – soussou

ответ

0

Если вам нужно динамически определить, что visible Тогда вы можете попробовать template вариант для тэ DetailView модели

<?= 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 
]) ?> 
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'), 
    ], 
]; 
Смежные вопросы