Я настраиваю в формате даты файла конфигурации как:
'dateFormat' => 'yy-MM-dd',
но я не могу найти способ получить даты в этом формате в активной форме:
Я старался :
<?= $form->field($model,
'mydate':date,
но это дает ошибку
Любая помощь была бы хороша 🙂
Вы должны заменить дату в нужном формате с помощью DateTime.
Например, если у вас есть данные в формате Unix и вы хотите преобразовать их в ‘d-M-Y’:
\DateTime::createFromFormat('U',$this->date)->format('d-m-Y')
Если вам всегда нужно это преобразование, вы можете создать функцию получения в модели:
public function getDateInFormat()
{
return \DateTime::createFromFormat('U',$this->date)->format('d-m-Y');
}
А то ввиду:
<?= $form->field($model,$model->dateInFormat); ?>
Вот dateFormat
является собственностью \Yii::$app->formatter
составная часть.
Чтобы явно использовать этот параметр, вы должны использовать форматировщик
\Yii::$app->formatter->asDate($date)
или же i18n составная часть
\Yii::t('app', 'The date is: {0,date}', $date);
Также эта опция используется по умолчанию format
в валидатор даты.
Так что все, что вам нужно, это добавить date
правило (в rules
функция вашей модели):
['mydate', 'date']
И тогда вы можете просто добавить в своем представлении
<?= $form->field($model, 'mydate', [])->input('text', []); ?>
Для работы с базой данных вы можете либо вручную конвертировать атрибут даты в / из формата db (например, переопределение beforeSave
а также afterFind
если вы работаете с ActiveRecord) или использовать timestampAttribute а также timestampAttributeFormat в date
валидатор.
Для сложных случаев вы можете использовать что-то вроде yii2-datecontrol.