2016-09-06 4 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\')}')}" /> 

사람이, 어쩌면 내가 완전히 잘못의 시작 어쩌면 더 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이 답변 TYPO3v8 및 유체 독립에 적용 } '(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입니다 .

<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