typo3 - 如何将字符串与 TYPO3 Fluid 中的变量进行比较
问题描述
我想做一个简单的比较,比如相当于:
if ($somevar === 'somestring')
现在,我发现了一些这样做的例子:
<f:if condition="{somevar} == 'somestring'">
...
TYPO3 核心 9.5 中也有很多地方,例如.
但是官方文档告诉我们,我们必须使用基于数组的奇怪解决方法:
XX/YY 处的字符串是不允许的,但是,暂时可以通过比较数组来实现字符串比较
由于复杂的实现,Fluid 尚无法与字符串进行比较,例如 ....。
( Extbase / 流体)
不管它是什么意思 ...
为了避免问为什么:在 TYPO3 9 中比较字符串和变量的推荐方法是什么,从什么时候开始?
解决方案
从 TYPO3 8.7 开始,Fluid if-ViewHelper 可以进行字符串、数字和数组比较,而无需将字符串放入数组中。但是,不支持通配符或正则表达式(如果您在 PHP 中编写自定义 ViewHelper,那么天空就是极限)。
支持的比较运算符有:==、!=、<、<=、>、>= 和 %。还支持逻辑运算符 && 和 ||。你可以用 ! (如!{启用})。
我听说文档团队正在努力更新和重组 Fluid 文档。同时,此页面有许多有用的提示和技巧:https ://usetypo3.com/24-fluid-tips.html
示例(使用标记和内联语法的混合):
- 字符串比较:比较变量和字符串
<f:variable name="foo">stuff</f:variable>
<f:if condition="{foo} == 'stuff'">
<f:render partial="FooPartial" arguments="{foo: foo}" />
</f:if>
- 比较整数(流畅的内联语法)
{f:variable(name: 'bar', value: 123)}
{f:variable(name: 'baz', value: 50)}
{f:if(condition: '{bar} > {baz}', then: 'This will print')}
- 布尔运算符:&&、||
<f:if condition="{bar} > {baz} && {baz} < 100">This will print.</f:if>
- 字符串“false”将评估为布尔值 false(流体内联语法)
{f:variable(name: 'untrue', value: 'false')}
{f:if(condition: untrue, then: 'Will not print', else: 'Will print')}
推荐阅读
- javascript - 如何解决此错误“SyntaxError: Unexpected token < in JSON at position 0”
- python - 为什么 Python 比较运算符显示不同的结果?
- amazon-web-services - 如何强制 CodeBuild (AWS) 失败?
- ios - 在发布新的应用程序更新时,如何从 iTunesConnect 中的先前版本复制“此版本中的新增功能”元数据?
- python - Keras 时间序列:在 LSTM 中包含静态和动态变量的建议
- c# - Map/use built-in MySQL function in Entity Framework
- javascript - 'Observable<{}>' 类型上不存在属性 'update'。Firebase 5 AngularFire2 5
- swift - Core data is causing the iPhone crash
- android - Streaming video from xampp, which way?
- html - 使用图像编辑表格列宽百分比