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

Fluid: Directly access value of array returned by view helper

我有自定义的流体 ViewHelper returns 一个数组,我想直接在一个命令中访问这个数组的值。

目前我正在使用两个命令:

{vendor:helper() -> v:variable.set(name: 'data')}
Value of foo: {data.foo}

有没有一种方法可以在一条命令中做到这一点? v:variable.get 似乎不适合这个任务。

这还取决于您真正想要达到的目标。如果你想循环数组,你应该创建一个不同的viewhelper 如果你想创建数组,然后访问不同位置的所有数据,你正在寻找 f:alias 流体助手

在最后一种情况下,您会在 helper 调用后立即看到 属性 的直接访问,而没有更多关于它的信息,您必须使用可选值更改 viewhelper。如果助手收到值,你 return 元素,否则它 return 是整个数组

v:variable.get of VHS viewhelpers 完全符合您的要求:

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

这 returns 数组数据中索引为 {foo} 的项目。

said, there is the VHS Variable / GetViewHelper.

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

如果您在模板中多次需要 returned 的 viewhelper 数组,最好按照您已经使用的方式使用它。因为否则你会在 viewhelper 后面调用 PHP 方法来构建和 return 数组,每次你想再次访问之前已经构建的数组的索引时。

您写道您正在使用自定义 ViewHelper。 可以修改吗?

在 ViewHelper 中,您可以轻松地分配一个变量:

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