0

フォーム内に時間を選択する必要があるため、分を 5 の倍数のみに丸めるカスタム ビューヘルパーを作成しました。setup.ts で時間を宣言します。

lib.time = TEXT
lib.time {
    data = date:H:i
}

テンプレートでは、cObject を呼び出します。

<nr:time value="{f:cObject(typoscriptObjectPath: 'lib.time')}" />

動作するインラインでも試しました(ランダムなViewHelperにラップされています)。

<f:link.action action="form">{nr:time(value: '{f:cObject(typoscriptObjectPath: \'lib.time\')}')}</f:link.action>

今、条件のある必要な場所にたどり着きましたが、ここでは機能する構文が見つかりませんでした...;

<f:form.textfield property="date" class="date"
        value="{f:if(condition: ticket.time, then: '{ticket.time}', else: '{f:cObject(typoscriptObjectPath: \'lib.time\')}')}" />

良い解決策を知っている人なら誰でも、おそらく私は完全に間違って始めたのでしょう。おそらくビューヘルパーは必要ありませんが、ライブラリで直接時間をフォーマットして操作できます。

ps: これは TimeViewHelper.php です:

class TimeViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper  {

     /**
     * @param string $value
     * @return
     */

    public function render($value) {
        $time = strtotime($value);
        $m = date('i', $time);
        $f = 5*60; // 5 minutes
        $r = $time % $f;

        $t = $time + ($f-$r);
        $new_time = ($m == 0 || $m % 5 === 0) ? $value : date('H:i', $t);
        return $new_time;
    }
}
4

2 に答える 2

1

どのバージョンの TYPO3 を使用しているのか、したがって Fluid を使用しているのかはわかりません。この回答は、TYPO3v8 および Fluid Standalone に適用されます。

<f:form.textfield property="date" class="date"
    value="{ticket.time -> f:or(alternative: '{f:cObject(typoScriptObjectPath: \'lib.time\')}" />

lib.time自分で好きなことをして、代わりに をテンプレート変数として割り当てると、さらに簡単に表現できます。

<f:form.textfield property="date" class="date" value="{ticket.time ? ticket.time : variableWithDefaultTime}" />
于 2016-09-07T11:42:22.240 に答える