Yii2. Как убрать (not set)/(не задано) в GridView?


При использовании GridView и установке значения format, например, в date, — можно увидеть в таблице значение, типа (not set)/(не задано) — в зависимости от языка.

Причина тому логична и очевидна — значение не установлено, но подобный вывод может не вписываться в концепцию проекта. Сейчас приведу несколько примеров, как можно заменить или убрать подобный вывод.

1. Изменить глобально для всего проекта — в разделе components Вашего конфига:

 
'formatter' => [
        'class' => 'yii\i18n\Formatter',
        'nullDisplay' => '',
]

2. Установить в настройках GridView при конкретном выводе:

 
 $someProvider,
    'formatter' => ['class' => 'yii\i18n\Formatter','nullDisplay' => ''],
    'columns'      => [
        ...
    ],
]); ?>

3. Ну и наименее гибкий, но все же имеющий право на жизнь, метод — проверка непосредственно на выводе колонки:
GridView:

 
 $myProvider,
    'columns'      => [
        ...
        [
            'attribute' => 'some_attribute',
            'format'    => 'raw',
            'value'     => function (ModelClass $model) {
                if ($model->some_attribute != null) {
                    return $model->some_attribute; 
              //or: return Html::encode($model->some_attribute)
                } else {
                    return '';
                }
            },
        ],
        ...
    ],
]); ?>

DetailView:

 
 $model,
    'attributes' => [
        ...
        [
            'attribute' => 'some_attribute',
            'value' => $model->some_attribute != null ? $model->some_attribute : '', 
      //or: 'value' => $model->some_attribute != null ? Html::encode($model->some_attribute) : '',
        ],
        ...
    ],
]) ?>
, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *