I have been searching for hours on the internet on trying to remove the initial filter on yii2 gridview. All the options point on setting a default value in the search. I would like when the index page loads, that no data is shown in the gridview only when user search. Any assistance is highly appreciated.
https://github.com/yiisoft/yii2/issues/5668
https://stackoverflow.com/questions/33608796/default-filter-in-gridview-with-yii2
<?php
use yii\helpers\Html;
use yii\grid\GridView;
/* @var $this yii\web\View */
/* @var $searchModel frontend\models\AnimalSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Animal and Animal Products Search';
$this->params['breadcrumbs'][] = $this->title;
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
//////prevent the dropdown from being populated when the user click back
$(window).bind("pageshow", function() {
$("#commodity").val('');
$("#species").val('');
$("#finality").val('');
$("#origin").val('');
});
</script>
<div class="animal-index">
<h1 align="center"><?= Html::encode($this->title) ?></h1>
<br>
<?php echo $this->render('_search', ['model' => $searchModel]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
// 'filterModel' => $searchModel,
// 'showHeader'=> false,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
// 'id',
'commodity',
'species',
'finality',
'origin',
// 'intendeduse',
// 'risk',
// 'conditions',
// 'scu',
// 'maf',
// 'cities',
// 'fisheries',
// 'forestry',
// 'comments',
['class' => 'yii\grid\ActionColumn',
'visibleButtons' => [
'update' =>false, // or whatever condition
'delete' => false,
],
],
],
]); ?>
</div>
You need to add a condition that would yield no results whenever no search params are present
update your search model to something like this
public function search($params)
{
$query = Model::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// this ensures no rows are returned if nothing was submitted
if (is_null($params) || empty($params)) {
$query->where('0 = 1');
return $dataProvider;
}
// ....
}