【发布时间】:2015-08-11 20:42:46
【问题描述】:
我真的被困在这里(也许疾病没有帮助......)。
设置: - 带有相应 extbase 和流体的typo3 6.2 - 检查了大约 20 个博客条目、官方文档和我找到的一些代码 sn-ps - 开发 TYPO3 的资深人士,但对 extbase/fluid 相对较新
目标: 和你们中的许多人一样,我尝试在前端实现一个表单来创建一个新对象。该对象包含一些日期时间属性。
症状: - 我可以在后端创建一个对象,并通过流畅的创建列表正确地输出它并从中获得一些乐趣,到目前为止没有问题。 - 填写表格时,我收到众所周知的 FlashErrorMessage “尝试调用时发生错误” - 在对给出错误的表单字段进行样式设置后(使用 f3-form-error css-class),我可以将 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');
}
然后是流体模板中的 sn-ps:
<f:form action="create" object="{paymentperiod}" class="form-horizontal" name="paymentperiod">
<f:form.textfield
id="paymentperiod_field_startdate"
property="startdate"
class="form-control" />
那么,我的问题在哪里????
非常感谢所有提供帮助的人。
最好的问候
【问题讨论】:
标签: validation datetime fluid extbase typo3-6.2.x