我需要在表单中选择一个小时,所以我创建了一个自定义视图助手,它只将分钟四舍五入到 5 的倍数。在 setup.ts 我 decalare 时间;
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:这是 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;
}
}