Yii2 dropdown in gridview widget filter
How to add dropdown list in the filter field Grid View ?
Add this in Gridview columns array:
[
'attribute' => 'attribute_name',
'value' => 'attribute_value',
'filter' => Html::activeDropDownList($searchModel, 'attribute_name', ArrayHelper::map(ModelName::find()->asArray()->all(), 'ID', 'Name'),['class'=>'form-control','prompt' => 'Select Category']),
],
View code as
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use backend\modules\employee\models\Employee;
use yii\helpers\ArrayHelper;
$this->title = 'Employee Log Books';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="employeelogbook-index box box-body table-responsive">
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<p>
<?= Html::a('Add Employee Log', ['create'], ['class' => 'btn btn-success']) ?>
</p>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'employee_staff_id',
'value'=>'employeeStaff.staff_name',
'filter' => Html::activeDropDownList($searchModel, 'employee_staff_id', ArrayHelper::map(Employee::find()->where(['status'=>'Working'])->orderBy('staff_name')->all(),'staff_id','staff_name'),['class'=>'form-control','prompt' => 'Select Category']),
'label'=>'Staff Name',
'options' => ['width' => '200']
],
[
'attribute' => 'date',
'format' => ['date', 'php:d-m-Y'],
'options' => ['width' => '150']
//'filter'=>false,
],
//'center_ccid',
'batch',
'subject',
'topic',
'description',
'rate',
'ta',
'hour',
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => ['style' => 'width:70px;'],
'header'=>'Act',
'template' => '{view} {update} {delete}',
'options' => ['width' => '70']
],
],
]); ?>
</div>
Other solutions
[
'attribute'=>'attribute name',
'filter'=>array("ID1"=>"Name1","ID2"=>"Name2"),
],
OR
[
'attribute'=>'attribute name',
'filter'=>ArrayHelper::map(Model::find()->asArray()->all(), 'ID', 'Name'),
],
DatePicker in the Filter field GridView
use dosamigos\datepicker\DatePicker;add this code in your gridview
[
'attribute' => 'date',
'value' => 'date',
'format' => ['date', 'php:d-m-Y'],
'options' => ['width' => '150'],
'filter'=>DatePicker::widget([
'model' => $searchModel,
'attribute' => 'date',
'clientOptions' => [
'autoclose' => true,
'format' => 'yyyy-m-d'
]
])
],
Yii2: filtering gridview from a form outside the header
<?php echo $this->render('_search', ['model' => $searchModel]) ?>
<?php
echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
......
]);
?>
http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#separate-filter-form