В моем приложении я использую элемент DateSelect для получения дня рождения пользователя. Когда я проверяю форму, выбирая значения дня рождения, мое поле остается пустым, поскольку оно должно вернуть мне формат даты.
Мой код формы;
$this->add(array(
'name' => 'date_of_birth',
'type' => 'DateSelect',
'options' => array(
'create_empty_option' => true,
'max_year' => date('Y') - 12,
'day_attributes' => array(
'data-placeholder' => 'Day',
'style' => 'width: 31.5%',
),
'month_attributes' => array(
'data-placeholder' => 'Month',
'style' => 'width: 31.5%',
),
'year_attributes' => array(
'data-placeholder' => 'Year',
'style' => 'width: 31.5%',
)
),
));
Получение элементов формы на мой взгляд:
<?php echo $this->formRow($form->get('date_of_birth')); ?>
И проверить вывод в моем контроллере:
..
Debug::dump($_POST);
.....
Debug::dump($form->getData());
$ _POST возвращает;
....
'day' => string '06' (length=2)
'month' => string '05' (length=2)
'year' => string '1999' (length=4)
...
Но $ form-> getData () возвращает;
....
'date_of_birth' => null
....
Это должно дать мне date_of_birth, заполненную датой, насколько я читаю в Интернете (блог). Что я делаю неправильно?
К настоящему времени я использую обходной путь, как указано ниже, если кто-то понял, как правильно управлять им, пожалуйста, дайте мне знать!
$aPostData = $request->getPost();
if ($request->getPost('year') && $request->getPost('month') && $request->getPost('day')) {
$dateTimeFormat = new \DateTime(date('Y-m-d', strtotime($request->getPost('year') . '-' . $request->getPost('month') . '-' . $request->getPost('day'))));
$aPostData['date_of_birth'] = $dateTimeFormat->format('Y-m-d');
}
$form->setData($aPostData);
Других решений пока нет …