如何在 Yii2 GridView::widget 的搜索框中使用带过滤功能的简单下拉列表?
How can I use a simple Dropdown list with filtering in the search box of GridView::widget, Yii2?
我有两个 tables "attendance",属性为 id
、status
、date
和 "staff"。 staff_id
作为考勤的外键table。在 _form.php 的出勤率中,我使用了
<?= $form->field($model, 'status')->dropDownList([ 'Present' => 'Present', 'Absent' => 'Absent', 'Leave' => 'Leave',], ['prompt' => 'Select status']) ?>
用于下拉菜单。现在我想在 gridview 搜索列中使用 属性 过滤和搜索下拉菜单。我希望我的 gridview 被我拥有的下拉列表过滤。因此,当我从下拉列表中选择一个值时,它应该根据所选值进行搜索。非常感谢任何帮助。
在您的 cgridview 中添加此代码,
array(
'name'=>'name_of_field',
'value'=>function($data){
echo $data->relation_name->name;
},
'filter'=>CHtml::listData(Model::model()->findAll('condition_if_any'),'id','name'),
'htmlOptions' => array('style' => "text-align:center;"),
),
试试这个在过滤器中添加下拉列表。
[
'attribute' => 'name_of_field',
'value' => function($model){
return $model->relationName->name;
},
'filter' => \yii\helpers\ArrayHelper::map(Model::find()->all(), 'id', 'name'),
],
我想你的问题是关于状态字段的
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
........
[
'attribute' => 'status',
'label' => 'Status',
'filter' => [ 'Present' => 'Present', 'Absent' => 'Absent', 'Leave' => 'Leave',]
],
......
自动从表中获取数据:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'attribute' => 'deptname',
'value' => 'deptname',
'filter'=>ArrayHelper::map(Attendance::find()->joinWith('staff')->orderBy('id')->all(), 'status', 'status'),
],
]
]);
?>
我有两个 tables "attendance",属性为 id
、status
、date
和 "staff"。 staff_id
作为考勤的外键table。在 _form.php 的出勤率中,我使用了
<?= $form->field($model, 'status')->dropDownList([ 'Present' => 'Present', 'Absent' => 'Absent', 'Leave' => 'Leave',], ['prompt' => 'Select status']) ?>
用于下拉菜单。现在我想在 gridview 搜索列中使用 属性 过滤和搜索下拉菜单。我希望我的 gridview 被我拥有的下拉列表过滤。因此,当我从下拉列表中选择一个值时,它应该根据所选值进行搜索。非常感谢任何帮助。
在您的 cgridview 中添加此代码,
array(
'name'=>'name_of_field',
'value'=>function($data){
echo $data->relation_name->name;
},
'filter'=>CHtml::listData(Model::model()->findAll('condition_if_any'),'id','name'),
'htmlOptions' => array('style' => "text-align:center;"),
),
试试这个在过滤器中添加下拉列表。
[
'attribute' => 'name_of_field',
'value' => function($model){
return $model->relationName->name;
},
'filter' => \yii\helpers\ArrayHelper::map(Model::find()->all(), 'id', 'name'),
],
我想你的问题是关于状态字段的
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
........
[
'attribute' => 'status',
'label' => 'Status',
'filter' => [ 'Present' => 'Present', 'Absent' => 'Absent', 'Leave' => 'Leave',]
],
......
自动从表中获取数据:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'attribute' => 'deptname',
'value' => 'deptname',
'filter'=>ArrayHelper::map(Attendance::find()->joinWith('staff')->orderBy('id')->all(), 'status', 'status'),
],
]
]);
?>