Intereting Posts
Сортировка результатов, возвращаемых SimpleXML, и Xpath в PHP Не удается удалить фотографию через API Facebook? Выполнение заказа промежуточного ПО в Laravel 5 используя jquery $ .ajax для вызова функции PHP как динамически изменять элемент двух связанных полей php: воссоздать и отобразить изображение из двоичных данных Передать переменную PHP в Java Script window.location строка с расширением php с использованием регулярного выражения PHP HTTP POST на Android-устройстве с использованием HttpURLConnection PHP: использование сообщения, когда поля mutliple form имеют одинаковое имя и идентификатор Встроенная функция PHP для сброса индексов массива? Safari не показывает длительность mp3, поданного с php, правильно Пример объектно-ориентированного класса php скрывать других получателей при отправке нескольких писем Как отредактировать этот запрос MySQL, чтобы включить дополнительный столбец с count и avg?

Отображение пустых строк для фильтров в Yii2.0 с помощью GridView

Я настроил GridView для подбора моей таблицы в Yii2.0 следующим образом:

<?= \yii\grid\GridView::widget([ 'dataProvider' => $model->dataProvider, 'filterModel' => $model->searchModel, 'columns' => [ [ 'label' => Yii::t( $cat, 'Id' ), 'value' => 'id', ], [ 'label' => Yii::t( $cat, 'Title' ), 'format' => 'raw', 'value' => function ( $data ) { if ( $data['status_code'] != 5 ) { return Html::a( $data['title'], '/signer/view/' . $data['id'] ); } else { return $data['title']; } }, ], [ 'label' => Yii::t( $cat, 'Description' ), 'value' => 'description', ], [ 'label' => Yii::t( $cat, 'Filename' ), 'value' => 'filename', ], [ 'label' => Yii::t( $cat, 'Status' ), 'value' => 'status', 'contentOptions' => function ( $data ) { $statuses = [ 1 => 'text-primary', # New 2 => 'text-warning', # Unsigned 3 => 'text-warning', # Partially signed 4 => 'text-success', # Signed 5 => 'text-danger', # Deleted ]; return [ 'class' => $statuses[$data['status_code']] ]; } ], [ 'label' => Yii::t( $cat, 'Created' ), 'value' => 'created', ], //[ 'class' => 'yii\grid\ActionColumn' ], ], ]); ?> 

Я получаю все правильные данные, но вместо входных данных фильтра я получаю пустые строки.

введите описание изображения здесь

Почему это? Что мне не хватает?

PS: Сама модель поиска отлично работает, то есть, когда я добавляю URL-адрес ?title=asd он действительно получает результаты поиска!

Согласно документации свойства $filterModel :

Обратите внимание, что для отображения поля ввода для фильтрации столбец должен иметь свой собственный yii\grid\DataColumn::$attribute или установить yii\grid\DataColumn::$filter как код HTML для поля ввода.

Поэтому вам нужно установить свойство yii\grid\DataColumn::$attribute в своих столбцах, и в большинстве случаев это делает ненужным value :

 <?= \yii\grid\GridView::widget([ 'dataProvider' => $model->dataProvider, 'filterModel' => $model->searchModel, 'columns' => [ [ 'label' => Yii::t( $cat, 'Id' ), 'attribute' => 'id', ], [ 'label' => Yii::t( $cat, 'Title' ), 'format' => 'raw', 'attribute' => 'title', 'value' => function ( $data ) { if ( $data['status_code'] != 5 ) { return Html::a( $data['title'], '/signer/view/' . $data['id'] ); } else { return $data['title']; } }, ], [ 'label' => Yii::t( $cat, 'Description' ), 'attribute' => 'description', ], [ 'label' => Yii::t( $cat, 'Filename' ), 'attribute' => 'filename', ], [ 'label' => Yii::t( $cat, 'Status' ), 'attribute' => 'status', 'contentOptions' => function ( $data ) { $statuses = [ 1 => 'text-primary', # New 2 => 'text-warning', # Unsigned 3 => 'text-warning', # Partially signed 4 => 'text-success', # Signed 5 => 'text-danger', # Deleted ]; return [ 'class' => $statuses[$data['status_code']] ]; } ], [ 'label' => Yii::t( $cat, 'Created' ), 'attribute' => 'created', ], //[ 'class' => 'yii\grid\ActionColumn' ], ], ]); ?> 

Другая возможная причина для пустой строки: (не в постерах точный случай)

Отсутствие / неправильное объявление public function rules() в модели поиска. В Yii 1 вы можете объединить строку, в Yii2 они должны быть действительными элементами массива.

 return [ [['authorId, title, publishFrom'], 'safe'], //WRONG [['authorId', 'title', 'publishFrom'], 'safe'], //CORRECT ];