1

Typo3フローで流体との間で日時を取得/設定する標準的な方法は何ですか?

基本的な f:form.textfield のように、日時を入力、編集、および永続化できる編集可能な html フィールドはありますか?

たとえば、日時を表示できることはわかっています <f:format.date format="d.m.Y - H:i:s">{productArticle.classdate}</f:format.date> が、その場合、値は null であり、何も表示されず、入力もできません。一部のバージョンでは、プロパティは f:format.date で機能しますか? 試してみると「プロパティが登録されていません」と表示されます。

それとも、ページに 2 つのフィールド (1 つは日付用、もう 1 つは時刻用) をアクションにまとめる必要がありますか?

ありがとう

4

1 に答える 1

4

それが標準的な方法かどうかはわかりませんが、個人的には好きではありません..しかし、次のように行うことができます:

新規/編集アクションの流体:

<f:form action="create" objectName="girlfriend">
...
<f:form.textfield property="birthDate" placeholder="1991-12-30 - 18:25:58" value="{newGirlfriend.birthDate->f:format.date(format:'Y-m-d - H:i:s')}" />
...
</f:form>

標準が適切でない場合は、コントローラーで initialize*Action を追加し、 \DateTime のpropertyMappingConfigurationを更新できます (作成アクションと更新アクションの両方で実行する必要があります)。

public function initializeCreateAction() {
    $mappingConfig = $this->arguments['girlfriend']->getPropertyMappingConfiguration();
    $mappingConfig->forProperty('birthDate')->setTypeConverterOption(
        'TYPO3\Flow\Property\TypeConverter\DateTimeConverter',
        \TYPO3\Flow\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,
        'Y-m-d - H:i:s'
    );
}

オブジェクトをコントローラーに直接渡すのではなく、サービス層で作成する方が簡単な場合があります。TypeConverters を確認することもできます。これらは initializeActions を必要とせず、優先度を高く設定して既存のものを簡単にオーバーライドできます。

于 2014-11-28T11:00:09.773 に答える