代码之家  ›  专栏  ›  技术社区  ›  Beginner m latha

更新时yii2 kartik/date/datepicker显示错误格式

  •  0
  • Beginner m latha  · 技术社区  · 6 年前

    我在ActiveForm中使用Kartik日期选取器。

    use kartik\date\DatePicker;
    

    我的ActiveForm字段:

        <?= $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);
    

    当我 更新 ,显示为

    enter image description here

    我需要这个作为

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  2
  •   Muhammad Omer Aslam    6 年前

    您必须向小部件提供格式化的日期。

    • 使用时 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);
      }
      

    现在将字段定义更改为“下方”,并刷新页面

    <? = $form->field ( $model , 'transferred_date' )->widget ( DatePicker::className () , [
        'options' => [ 'placeholder' => 'Select date ...' ] ,
        'pluginOptions' => [
           'format' => 'dd-mm-yyyy' ,
           'todayHighlight' => true
        ]
    ] )->label ( 'Transferred Date' );
    ?>
    
        2
  •  1
  •   Vandro.nds    6 年前

    你需要这样安排你的日期:

    'value' => $model->isNewRecord ? date('d-m-Y', strtotime('+2 days')) : date('d-m-Y', strtotime($model->transferred_date));
    
        3
  •  0
  •   Mohamad ali Zayat    6 年前

    好的,我的朋友,你所需要的就是在你的活动表单中更改日期选择器小部件的格式,如下所示

     <?= $form->field($model, 'transferred_date')->widget(DatePicker::className(), [
                            'value' => date('d-M-Y', strtotime('+2 days')),
                            'options' => ['placeholder' => 'Select date ...'],
                            'pluginOptions' => [
                                'format' => 'dd-mm-yy',
                                'todayHighlight' => true
                            ]
        ])->label('Transferred Date');
    ?>