2017-02-20 84 views
0

我設置配置文件中的日期格式爲:Yii2日期格式的活性形式不工作

'dateFormat' => 'yy-MM-dd', 

,但我不能找到讓日期這種格式在活性形式的方式: 我想:

<?= $form->field($model, 
    'mydate':date, 

但是這給錯誤 任何幫助將是不錯:)

+0

你想選擇或驗證的格式。你使用jquery日期選擇器 –

回答

0

您必須使用日期時間更換日期到所需要的格式

例如,如果你在UNIX格式的數據和要轉換爲「DM-Y」:

\DateTime::createFromFormat('U',$this->date)->format('d-m-Y') 

如果你總是需要這種轉換,你可以創建模型中的getter函數:

public function getDateInFormat() 
{ 
    return \DateTime::createFromFormat('U',$this->date)->format('d-m-Y'); 
} 

而且鑑於:

<?= $form->field($model,$model->dateInFormat); ?> 
+0

好吧,我聽到你 - 所以你說是沒有辦法爲所有人設置一些東西?每次我處理日期時,我都需要進行轉換?在datepicker中的設置是沒有用的?這是個壞消息! –

+0

是的,我知道)但這是常見的做法 –

0

這裏dateFormat是的屬性組件。

爲了明確使用此設置,您應該使用格式化

\Yii::$app->formatter->asDate($date)

國際化組件

\Yii::t('app', 'The date is: {0,date}', $date);

而且這個選項在date validator用作默認format

因此,所有你需要的是添加date規則(在模型的rules功能):

['mydate', 'date'] 

然後你就可以在你看來

<?= $form->field($model, 'mydate', [])->input('text', []); ?> 

只需添加爲了工作使用數據庫,您可以手動將日期屬性轉換爲/從數據庫格式(例如,如果使用ActiveRecord,則覆蓋beforeSaveafterFind),或者在012中使用timestampAttribute和驗證器。

對於高級案例,您可以使用類似yii2-datecontrol之類的東西。