php - Yii2 kartik/date/datepicker 在更新时显示错误的格式
问题描述
我在我的活动表单中使用 kartik DatePicker。
use kartik\date\DatePicker;
我的活动表单字段:
<?= $form->field($model, 'transferred_date')->widget(DatePicker::className(), [
'value' => date('d-M-Y', strtotime('+2 days')),
'options' => ['placeholder' => 'Select date ...'],
'pluginOptions' => [
'format' => 'dd-mm-yyyy',
'todayHighlight' => true
]
])->label('Transferred Date');
?>
在创建时,我将其保存为 UTC 日期格式:
$model->transferred_date = new \MongoDB\BSON\UTCDateTime(strtotime($postModel['transferred_date'])*1000);
当我更新时,它显示为
我需要这个
解决方案
您必须向小部件提供格式化的日期。
使用时,
ActiveForm
您可以覆盖afterFind()
特定模型以格式化日期并覆盖字段的默认时间戳值transferred_date
。对于格式化,你可以通过在配置文件中定义使用yii-i18n-formatter组件来
common/config/main.php
使用advanced-app
,或者config/web.php
使用basic-app
.在配置文件下面添加
'components'=>[ 'formatter' => [ 'dateFormat'=>'dd-MM-yyyy', 'datetimeFormat' => 'yyyy-MM-dd HH:mm:ss', ], ]
在您的模型中添加以下内容
public function afterFind() { parent::afterFind(); $this->transferred_date=Yii::$app->formatter->asDate($this->transferred_date); }
现在将字段定义更改为下面并刷新页面
<?php echo $form->field($model, 'transferred_date')->widget(DatePicker::class, [
'options' => ['placeholder' => 'Select date ...'],
'pluginOptions' => [
'format' => 'dd-mm-yyyy',
'todayHighlight' => true,
],
])->label('Transferred Date');
推荐阅读
- python - 如果为空,则阻止 django formset 提交
- javascript - 如何在javascript中进行通配符重定向
- android - IONIC应用程序上的后退按钮面临问题 - Angular
- python - 如何获得具有最低值的最高字典键
- python - 尝试使用熊猫交叉表时,请保持入门“AssertionError:数组和名称必须具有相同的长度”
- android - 如何为 android studio 设置原生 c++?
- python - Python输入解释为字符串
- android - 导航到另一个片段使用导航方向时如何保留数据?
- python - Jupyter Notebook中的Tensorflow导入错误
- svelte - 如何让 Svelte 在 DOM 的其他地方重用组件实例,而不是销毁/重新创建它?