Форматирование даты Yii2 не работает в активной форме

Я настраиваю в формате даты файла конфигурации как:

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

но я не могу найти способ получить даты в этом формате в активной форме:
Я старался :

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

но это дает ошибку
Любая помощь была бы хороша 🙂

0

Решение

Вы должны заменить дату в нужном формате с помощью 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); ?>
0

Другие решения

Вот 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.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector