在yii2中过滤数据后,如何更改过滤器搜索标签中的日期格式?

时间:2019-08-29 10:56:41

标签: yii2

我正在yii2框架中工作,我想显示日期格式为mm / dd / yyyy,但是在我的数据库格式中为yyyy-mm-dd。在模型搜索中,我将格式转换为mm / dd / yy并得到结果。在毡状搜索标签中显示为yyyy-mm-dd后,我想显示mm / dd / yyyy格式。请提出建议。

UserSearch模型

$query = User::find();
$dataProvider = new ActiveDataProvider([
      'query' => $query,
    ]);

$query->andFilterWhere(['like', 'start_date', trim($this->start_date)])

return $dataProvider;

index.php

<?= GridView::widget([
       'dataProvider' => $dataProvider,
        'tableOptions' => ['class' => 'table table-bordered table-hover '],
         'headerRowOptions' => [
               'class' => 'thead-light',
          ],
          'rowOptions' =>function($model){
                 if($model->status == 0){
                     return ['class' =>'inactive-border-color',];
                  }
            },
            'filterModel' => $searchModel,
             'columns' => [
                   [
                        'attribute' => 'start_date',
                         'format' => 'date',
                         'value' => 'termination_date',
                          'filterInputOptions' => [
                                 class'       => 'form-control',
                                 'placeholder' => 'MM/DD/YYYY'
                           ],
                    ],
              ]
]); ?>

我想在过滤器搜索中显示mm / dd / yyyy格式。enter image description here

1 个答案:

答案 0 :(得分:2)

使用UserSearch模型创建数据提供程序后,其$start_date中的值不再用于过滤,因此您可以将其更改为输出所需的格式。您只需要在创建数据提供者和呈现视图之间的任何位置的控制器操作中添加以下代码即可。

$searchModel->start_date = \Yii::$app->formatter->asDate($searchModel->start_date);

另一个选择是,仅在创建数据提供者时才将其转换为$ start_date属性中的值,如下所示:

public function createDataProvider()
{
    $query = User::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $query->andFilterWhere(['like', 'start_date', $this->normalizeDate($this->start_date)]);

    return $dataProvider;
}

protected function normalizeDate($date)
{
    //your code to convert date
    return $convertedDate;
}