Я использую стандартный GridView для вывода таблички. При пустом списке элементов выводится надпись задаваемая параметром emptyText
. С этим все в порядке. Но! Заголовки столбцов при пустом списке меняются на значение параметра attribute
для конкретного столбца... Вместо того чтобы оставаться той меткой которая указана в модели методом attributeLabels
. Например:
echo GridView::widget([
'dataProvider' => new ArrayDataProvider(['allModels' => $items]),
'columns' => [
[ 'attribute' => 'name' ],
[ 'attribute' => 'phone' ],
],
'emptyText' => 'пусто'
]);
Если элементы есть то отображается так (в соответствии с метками в attributeLabels
модели):
| Имя | Телефон |
|------|--------------|
| Тест | +79081234567 |
Но если элементов нет то отображаются названия атрибутов:
| name | phone |
|-------|-------|
| пусто |
Как этого избежать? Указывать дополнительно параметр label
у каждого столбца? Но это дублирование меток уже указанных в attributeLabels
:( Не очень хотелось бы...
P.S. Логично было бы помимо dataProvider
указывать где-то класс модели отдельно и чтобы он уже подтягивал метки оттуда даже если элементов нет... Но я не нашел такой возможности. Кроме разве что filterModel
, но тогда добавляются инпуты фильтрации, а мне они не нужны.
У ArrayDataProvider
можно задать свойтво modelClass
. Пропишите там название своего класса.
Данная ситуация возникает потому, что GridView использует массив данных, а не массив моделей. Если использовать ActiveDataProvider, то заголовки столбцов будут отображаться корректно даже если ничего не найдено.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть ссылка на видео файл с другого хоста- https://host-herecom/directory/720p
возник вопрос как правильно провернуть вызов функции контроллера со страницы с помощью js
На сайте есть сайдбар для вывода кнопки "Корзина"Я добавил в код вывод