2016-03-10 2 views
0

В моем приложении я использую элемент DateSelect для получения дня рождения пользователей. Когда я тестирую форму, выбирая значения дня рождения, мое поле остается пустым, поскольку оно должно вернуть мне формат даты.ZF2 Получение выбранного значения из DateSelect Element

Мой код формы;

$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 заполненный с датой, насколько я читал в интернете (blog). Что я делаю не так?

ответ

0

К настоящему времени я использую обходное решение, как показано ниже, если кто-то выяснил, как правильно управлять им, пожалуйста, дайте мне знать!

$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); 
Смежные вопросы