2016-09-06 9 views
0

フォーム内に1時間の選択を入れる必要があるので、5分の倍数に丸めるカスタムビューヘルパーを作成しました。 setup.tsの 私は時刻をデカールします。typo3流体テンプレート:ビューアーで多すぎる条件の中のcObject

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\')}')}" /> 

良い解決策を知っている誰もが、多分私は、完全に間違っているの開始多分何なViewHelperは必要ありませんが、私はlibに直接時間をフォーマットして操作することができます。

PS:

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; 
    } 
} 
+0

を ' '{ticket.timeを避けてください。 } ''(TextNodesでオブジェクトアクセサーをラップする)。詳細については、https://vimeo.com/167666466を参照してください。 –

答えて

4

あなたは常に

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

シンプルさが猫を殺した...もちろん、いじる数時間後に私はもはや目に見えませんでした、ありがとう!! – webMan

+0

ようこそ。 –

+0

答えが助けられた場合、男性にいくつかのクレジットと投票を与えてください;) –

1

あなたが使用TYPO3のバージョン、したがって、流体言わないHTML構文とf:if条件を使用することができます。これはTimeViewHelper.phpです。この回答はTYPO3v8と流体スタンドアロンに適用されます。

<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}" /> 
+0

私はtypo3 7.6.10で作業します...私はそれを直接渡しましたが、静的な値を持つ方法しか見つけませんでした...これは新しいオプション8で... – webMan

+0

私はあなたのvidsの後にインラインでコードしようとしました...あなたが他人に説明する時間をくれてありがとう...しかし、私はそれを働かせることができませんでした... '{ticket.date}'にticket.dateの動作 – webMan

関連する問題