我正在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'
],
],
]
]); ?>
答案 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;
}