Fluid:直接访问视图助手返回的数组值

5
我有一个自定义流体(Fluid)ViewHelper,它返回一个数组,我想在一个命令中直接访问该数组的值。
目前我正在使用两个命令:
{vendor:helper() -> v:variable.set(name: 'data')}
Value of foo: {data.foo}

有没有一种方法可以使用单个命令来完成这个任务?v:variable.get 似乎不适合这个任务。

1
我不知道有没有纯粹的流体解决方案。另一个选择是:您可以给视图助手提供一个额外的参数,该参数接受应返回的数组属性,因此命令看起来像这样:{vendor:helper(property: 'foo')}。虽然不如纯流体解决方案优雅,但也是一种替代方法。 - Jost
4个回答

1

正如@Jpsy所说,这里有VHS变量/GetViewHelper

但是使用应该是{v:variable.get(name: '{vendor:helper()}.foo')}

如果您需要在模板中多次返回您的视图助手的数组,则最好按照您已经使用的方式使用它。否则,每当您想要再次访问先前构建的数组的索引时,都会调用视图助手后面的PHP方法来构建和返回数组。


0

v:variable.get of VHS viewhelpers 可以完美地实现你想要的功能:

{v:variable.get(name: 'data.{foo}')}

这将从数组数据中返回索引为{foo}的项。


0

你写道你正在使用自定义的ViewHelper。你能修改它吗?

在ViewHelper内部,你可以轻松地分配一个变量:

$this->templateVariableContainer->add('variable', 'content');


-1

这也取决于你真正想要达到什么目的。如果你想循环数组,你应该创建一个不同的视图助手。 如果你想创建数组,然后在不同的位置访问所有数据,你需要使用f:alias fluid helper。

在最后一种情况下,当你在助手调用之后立即查找属性的直接访问时,你必须更改你的视图助手,并添加一个可选值。如果助手接收到值,它将返回元素,否则它将返回整个数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接