Fluid-Alias-View-Helper 与另一个视图助手的结果
Fluid-Alias-View-Helper with result of another view helper
在我的一个 NEOS 模板中,我尝试解决生成随机数(在指定范围内)并将其存储到变量中供以后使用的简单任务。
由于 none 的默认视图助手提供了这样的功能,我开发了自己的视图助手,它需要一个最小值和最大值。在内部,视图助手使用 php 的 rand($min, $max)
.
以下示例适用于我的模板:
site:RandomNumber(0, 17)
正如预期的那样,这会输出一个随机数。但是现在我需要将结果存储到一个变量中,因为我必须多次使用它。
我遇到了 流体别名-view-helper:
<f:alias map="{number: 33}">
The number is {number}
</f:alias>
这导致:
The number is 33
现在我希望数字不是 33,而是我的 RandomNumber
-view-helper.
的结果
我试过类似的东西:
<f:alias map="{number: {site:RandomNumber(0, 17)}}">
The number is {number}
</f:alias>
然而这抛出一个异常说:
The argument "map" was registered with type "array", but is of type "string"
in view helper "TYPO3\Fluid\ViewHelpers\AliasViewHelper"
f:alias
view-helper 的文档说接受的值是其他 view-helper,但他们从未给出任何示例。
我对这种方法完全错了吗?是否根本不可能在流体模板中分配一个简单的变量?
更多信息:
我在网站上确实有一个滑块,它应该在(几乎)每次页面加载时以不同的幻灯片开始。所以我需要获取这个随机的幻灯片编号,我必须在滑块标记中多次引用它。
应该是{site:randomNumber(min: 1, max:10)}
。注意外壳。这是假设您在模板的开头注册了名称空间 site
:
{namespace site=Vendor\ExtName\ViewHelpers}
编辑:参数必须与 ViewHelper 渲染函数的参数名称相匹配。
我又深挖了一下,先尝试输出:
{site:randomNumber(0,17)} <- was output as the string, not the expected result
<site:randomNumber min="0" max="17" /> <- this was the expected output
第一个,是我需要开始工作才能在别名助手中使用它的那个吗?
所以我首先必须确保第一个有效!
我随机猜测有必要指定参数名称。所以我尝试了这个:
{site:randomNumber({min: 0, max: 17})}
来自 PHP 我认为,提供一个带有参数的数组是解决方案。然而我错了
谷歌搜索 "fluid inline notation" 引导我找到这个资源:https://wiki.typo3.org/Fluid_Inline_Notation
在那里我看到,我非常接近。参数必须由它们的名称给出,但不能以数组表示法给出,因此 THIS 产生了预期的输出:
{site:randomNumber(min: 0, max: 17)}
所以我在解决问题上更进了一步。所以我把这个片段粘贴到别名助手中,如下所示:
<f:alias map="{number: {site:randomNumber(min: 0, max: 17)}}">
The number is {number}
</f:alias>
然而,这会导致与之前相同的异常。我觉得我很接近,所以我猜想将表达式用单引号括起来,比如:
<f:alias map="{number: '{site:randomNumber(min: 0, max: 17)}'}">
The number is {number}
</f:alias>
这就是我想要的一切。很难相信一个人需要 2 天的时间来解决这个问题,因为文档真的很糟糕。
在我的一个 NEOS 模板中,我尝试解决生成随机数(在指定范围内)并将其存储到变量中供以后使用的简单任务。
由于 none 的默认视图助手提供了这样的功能,我开发了自己的视图助手,它需要一个最小值和最大值。在内部,视图助手使用 php 的 rand($min, $max)
.
以下示例适用于我的模板:
site:RandomNumber(0, 17)
正如预期的那样,这会输出一个随机数。但是现在我需要将结果存储到一个变量中,因为我必须多次使用它。
我遇到了 流体别名-view-helper:
<f:alias map="{number: 33}">
The number is {number}
</f:alias>
这导致:
The number is 33
现在我希望数字不是 33,而是我的 RandomNumber
-view-helper.
我试过类似的东西:
<f:alias map="{number: {site:RandomNumber(0, 17)}}">
The number is {number}
</f:alias>
然而这抛出一个异常说:
The argument "map" was registered with type "array", but is of type "string"
in view helper "TYPO3\Fluid\ViewHelpers\AliasViewHelper"
f:alias
view-helper 的文档说接受的值是其他 view-helper,但他们从未给出任何示例。
我对这种方法完全错了吗?是否根本不可能在流体模板中分配一个简单的变量?
更多信息: 我在网站上确实有一个滑块,它应该在(几乎)每次页面加载时以不同的幻灯片开始。所以我需要获取这个随机的幻灯片编号,我必须在滑块标记中多次引用它。
应该是{site:randomNumber(min: 1, max:10)}
。注意外壳。这是假设您在模板的开头注册了名称空间 site
:
{namespace site=Vendor\ExtName\ViewHelpers}
编辑:参数必须与 ViewHelper 渲染函数的参数名称相匹配。
我又深挖了一下,先尝试输出:
{site:randomNumber(0,17)} <- was output as the string, not the expected result
<site:randomNumber min="0" max="17" /> <- this was the expected output
第一个,是我需要开始工作才能在别名助手中使用它的那个吗?
所以我首先必须确保第一个有效!
我随机猜测有必要指定参数名称。所以我尝试了这个:
{site:randomNumber({min: 0, max: 17})}
来自 PHP 我认为,提供一个带有参数的数组是解决方案。然而我错了
谷歌搜索 "fluid inline notation" 引导我找到这个资源:https://wiki.typo3.org/Fluid_Inline_Notation
在那里我看到,我非常接近。参数必须由它们的名称给出,但不能以数组表示法给出,因此 THIS 产生了预期的输出:
{site:randomNumber(min: 0, max: 17)}
所以我在解决问题上更进了一步。所以我把这个片段粘贴到别名助手中,如下所示:
<f:alias map="{number: {site:randomNumber(min: 0, max: 17)}}">
The number is {number}
</f:alias>
然而,这会导致与之前相同的异常。我觉得我很接近,所以我猜想将表达式用单引号括起来,比如:
<f:alias map="{number: '{site:randomNumber(min: 0, max: 17)}'}">
The number is {number}
</f:alias>
这就是我想要的一切。很难相信一个人需要 2 天的时间来解决这个问题,因为文档真的很糟糕。