2017-02-20 86 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之类的东西。