【发布时间】:2020-03-10 03:00:20
【问题描述】:
我已将 kartik-v 日期范围选择器添加到我的网格视图中,但在我选择日期后过滤器无法工作。小部件的占位符将显示所选日期,但网格视图中的结果不匹配。 gridview 中的结果显示所有数据。
视图中的代码:
<?= GridView::widget([
'options' => ['class' => 'table-sm'],
'filterModel' => $searchModel,
'dataProvider' => $dataProvider,
'summary' =>'',
'columns' => [
[
'attribute' => 'price',
'value' => function ($model) {
return number_format($model->price, 3);
},
'contentOptions' => ['class' => 'text-right']
],
[
'attribute' => 'date',
'contentOptions' => ['class' => 'text-right'],
'filter' => DateRangePicker::widget([
'name'=>'date_range_2',
'presetDropdown'=>true,
'convertFormat'=>true,
'includeMonthsFilter'=>true,
'attribute' => 'date',
'model' => $searchModel,
'pluginOptions' => ['locale' => ['format' => 'Y-m-d']],
'options' => ['placeholder' => 'Select Date']
])
],
]
]); ?>
下面的代码是我的 $searchModel 部分。
更新:
public function rules()
{
return [
[['id'], 'integer'],
[['name', 'date'], 'safe'],
[['price'], 'number'],
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Lme::find()->orderBy([
'date' => SORT_DESC
]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => false //['defaultOrder' => ['date' => SORT_DESC]]
]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'price' => $this->price,
'date' => $this->date,
]);
$query->andFilterWhere(['like', 'name', $this->name]);
return $dataProvider;
}
【问题讨论】:
-
显示你的
$searchModel