2016-08-17 13 views
0

Fluo 6.2とExtbase 6.2を使って、Typo3 6.2でExtension Builderを使って拡張を行いました。
私は、日付プロパティを持つAppointment-Objectsを作成しました。
enter image description hereTypo3 6.2 Extbase Extensionの日付入力フォーマットの設定方法は?

「dd.mm.yyyy」の形式で日付を入力したいとします。 だから私はこの試みた:
enter image description here

をそしてそれは、このエラーを与える: enter image description here
私はこれに慣れていないんだと私は良い方法でこれを解決したいと私は無知です。
createActionコードは単純に拡張ビルダーによって生成されるため、このようになりますされています

/** 
* action create 
* 
* @param \JH\Appmgmt\Domain\Model\Appointment $newAppointment 
* @return void 
*/ 
public function createAction(\JH\Appmgmt\Domain\Model\Appointment $newAppointment) { 
    $this->addFlashMessage('The object was created. Please be aware that this action is publicly accessible unless you implement an access check. See <a href="http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain" target="_blank">Wiki</a>', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); 
    $this->appointmentRepository->add($newAppointment); 
    $this->redirect('list'); 
} 

今、私はフォーマットが動作するためにここで何かを変更した場合、私は同じことをするだろうことを実現しますupdateActionと私がまだ知らない他のものがあります。

私も必死に部分的に何らかの形で必要な形式にフォーマットしようとしたが、それは失敗にバインドされた - 同じ結果:私はあなたの助けが必要な場所だからです

<f:form.textfield property="appointmentDate" value="{appointment.appointmentDate->f:format.date(format:'Y-m-d\TH:i:sP')}" /><br /> 

を - 私がどこかわかりません私は他のフィールドのためにも必要になるので、この日付フォーマットをグローバルに許可する方法。

私はドメインモデルで何かを変えていると考えることができる唯一の他の事:

/** 
* appointmentDate 
* 
* @var \DateTime 
*/ 
protected $appointmentDate = NULL; 

が、私は、私はこれにアプローチすべきか分かりません。 :( 誰でもアイデア?

答えて

1

あなたはDateオブジェクトとして正しくフォーマットされていない日付を送る。 エラーが言うまさに何それ。あなたが何ができるか

は再フォーマットそんなに送った日付です。それは、これはプロパティマッピングを呼び出すinitializeアクションで行われ、あなたのオブジェクトのための有効な引数として、あなたのコントローラのアクションに到着することを

明確な例がここで見つけることができます:。 http://www.kalpatech.in/blog/detail/article/typo3-extbase-datetime-property-converter.html

あなたの一部必要がある:

// Here we convert the property mapping using the property mapper 
    public function initializeAction() { 
     if ($this->arguments->hasArgument('newCalendar')) { 
      $this->arguments->getArgument('newCalendar')->getPropertyMappingConfiguration()->forProperty('startdate')->setTypeConverterOption('TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter',\TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,'d-m-Y'); 
     } 
    } 

また、あなたのコントローラに日付引数の検証を無効にして、あなたの「日付」から有効な日付オブジェクトを作成し、setAppointmentDate($yourNewDateObject)を使用することができます。 次に、エクストラベースの検証を行いますが、これは良い方法ではありません。

+0

と、その型の引数が複数あり、あまりにも多すぎるためにそれらをすべて書きたくない場合はどうすればよいですか? –

関連する問題