2015-08-11 1 views
1

Я действительно застрял здесь (может быть, болезнь не помогает ...).TYPO3 Extbase: сохраняющаяся модель домена с datetime свойство

Окружение: - typo3 6,2 с по Extbase и жидкости - проверен около 20 записей, официального доку, и нескольких фрагментов кода, которые я нашел - старшая по разработке TYPO3, но относительно нового для Extbase/жидкости

Цель: Как многие из вас, я пытаюсь реализовать форму в интерфейсе, чтобы создать новый объект. Этот объект содержит некоторые свойства datetime.

Симптомы: - я могу создать объект в интерфейсе и правильно выводить его с жидкостью создания списков и поразвлечься с ним, никаких проблем до сих пор. - При заполнении формы я получаю все известные FlashErrorMessage «Произошла ошибка при попытке позвонить» - После стилизации полей формы, которые дают ошибку (используется класс css fc-form-error), я мог бы определить ввод поля свойств datetime, как плохие парни.

TCA выдержка:

'startdate' => array(
    'label' => 'LLL:EXT:ngibmembers/Resources/Private/Language/locallang_db.xlf:paymentperiod.startdate', 
    'config' => array(
     'type' => 'input', 
     'size' => 30, 
     'eval' => 'date', 
    ), 
), 
'stopdate' => array(
    'label' => 'LLL:EXT:ngibmembers/Resources/Private/Language/locallang_db.xlf:paymentperiod.stopdate', 
    'config' => array(
     'type' => 'input', 
     'size' => 30, 
     'eval' => 'date', 
    ), 
), 

то здесь модель предметной области часть:

/** 
* startdate 
* 
* @var \DateTime 
* @validate DateTime 
*/ 
protected $startdate; 

/** 
* stopdate 
* 
* @var \DateTime 
* @validate DateTime 
*/ 
protected $stopdate; 

/** 
* Get startdate 
* 
* @return \DateTime 
*/ 
public function getStartdate(){ 
    return $this->startdate; 
} 

/** 
    * Set startdate 
    * 
    * @param \DateTime $startdate 
    * @return Paymentperiod 
    */ 
    public function setStartdate($startdate){ 
     $this->startdate = $startdate; 
     return $this; 
    } 

/** 
* Get stopdate 
* 
* @return \DateTime 
*/ 
public function getStopdate(){ 
    return $this->stopdate; 
} 

/** 
* Set stopdate 
* 
* @param \DateTime $stopdate 
* @return Paymentperiod 
*/ 
public function setStopdate($stopdate){ 
    $this->stopdate = $stopdate; 
    return $this; 
} 

Действия

/** 
* convert date properties 
* 
* @return void 
*/ 
public function initializeAction(){ 
$dateFormat = 'dd.mm.yyyy'; 
if (isset($this->arguments['paymentperiod'])) { 
    $this->arguments['paymentperiod'] 
     ->getPropertyMappingConfiguration() 
     ->forProperty('startdate') 
     ->setTypeConverterOption(
      'TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter', 
      \TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT, 
      $dateFormat); 
} 
if (isset($this->arguments['paymentperiod'])) { 
    $this->arguments['paymentperiod'] 
     ->getPropertyMappingConfiguration() 
     ->forProperty('stopdate') 
     ->setTypeConverterOption(
      'TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter', 
      \TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT, 
      $dateFormat); 
} 
} 

/** 
* action new 
* 
* @param \NGiB\Ngibmembers\Domain\Model\Paymentperiod $paymentperiod 
* @ignorevalidation $paymentperiod 
* @return void 
*/ 
public function newAction(\NGiB\Ngibmembers\Domain\Model\Paymentperiod $paymentperiod = NULL) { 
    $this->view->assign('paymentperiod',$paymentperiod); 
    $this->view->assign('settings',$this->settings); 
} 

/** 
* action create 
* 
* @param \NGiB\Ngibmembers\Domain\Model\Paymentperiod $paymentperiod 
* @return void 
*/ 
public function createAction(Paymentperiod $paymentperiod) { 
    $this->paymentRepository->add($paymentperiod); 
    $this->redirect('new'); 
} 

, а затем фрагменты из шаблона жидкости:

<f:form action="create" object="{paymentperiod}" class="form-horizontal" name="paymentperiod"> 

<f:form.textfield 
    id="paymentperiod_field_startdate" 
    property="startdate" 
    class="form-control" /> 

так, где моя проблема ????

Большое спасибо всем, кто помогает.

С наилучшими пожеланиями

ответ

1

нормально, нашли проблему:

так бутстраповская DatePicker я выбрал «ДД.ММ.ГГГГ» потребности в DateFormat, чтобы дать правильную центральную европейскую отформатированные дату.

После некоторой дополнительной отладки и чтения я наконец выяснил, что класс PHP DateTime использует «d.m.Y» для разрешения того же формата.

изменение датыФормат в initializeAction контроллера решил проблему проверки.

Мне определенно нужно получить лучшую библиотеку датпикера: S