2016-09-06 67 views
0

我需要在表單中放置一個小時選擇,因此我創建了一個自定義視圖幫助器,將分鐘舍入爲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\')}')}" /> 

誰知道一個好的解決辦法,也許我一開始完全錯誤的,也許不需要視圖助手,但我可以在lib直接格式化和操作時間。

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

請避免''{ticket.time }''(用TextNodes包裝對象訪問器)。有關更多信息,請參閱https://vimeo.com/167666466。 –

回答

4

您可以隨時使用f:if條件與HTML語法

<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的版本,因此流體。這個答案適用於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}'to ticket.date工程 – webMan