Как показать дату в одном формате, но сохранить ее в другом?

В моей форме у меня есть fieldset, который имеет элемент даты:

    $this->add([
'name' => 'dob',
'type' => 'date',
'attributes' => [
'id' => 'dob',
'class' => 'form-control',
],
'options' => [
'label' => 'Date of Birth?',
],
]);

со следующей спецификацией входного фильтра:

        [
'name' => 'dob',
'filters' => [
[
'name' => 'date_time_formatter',
'options' => [
'format' => 'Y-M-d h:i:s.000',
],
]
],
],

Когда я добавляю запись (данные формы пустые), в интерфейсе я получаю поле даты с раскрывающимся календарем, который заполняется в зависимости от моей локали (дд / мм / гггг). Это нормально — проходит через мой фильтр, когда я отправляю форму, формат даты изменяется и без проблем помещается в мою базу данных.

Когда я редактирую запись (данные формы = ['dob' => '1972-15-07 12:00:00.000']), на передней панели календарь пуст, а на консоли есть сообщение:

> The specified value "1972-15-07 12:00:00.000" does not conform to the required format, "yyyy-MM-dd".

Я использую один и тот же скрипт представления для нескольких форм, поэтому я делаю только <?php echo $this->form($this->form);?> — то есть я не могу <?php echo $this->formRow($this->form->get('dob')->dosomething());?>

Как я могу $form->setData($data); dob поле с использованием необработанного значения в БД и заполнить его в другом формате? (идеальное решение будет ограничено манипулированием только элементом или набором полей, а не формой или контроллером).

0

Решение

Вы можете преобразовать свою дату в формат, принятый вашим плагином календаря:

$date = date('d/m/Y', strtotime($date));
0

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

Других решений пока нет …

По вопросам рекламы [email protected]