Urs*_*Urs 0 typo3 fluid extbase typo3-6.2.x
我有一个JSON字符串,其中包含我想在模板中呈现的一些数据.由于Fluid数组也以JSON标注,我想我可能只需要接受JSON字符串并将其交给流体,告诉它像处理其他数组一样处理它并在模板中使用它.
因此获得了大量的速度并且失去了开销(不必将JSON数据拆分以将其保存在DB中,可以轻松地将其模板化为流畅的).
它不起作用,至少不是我如何尝试它.
<f:alias map="{item.jsonData}">
{fieldname}
</f:alias>
Run Code Online (Sandbox Code Playgroud)
它 - 当然 - 抱怨它收到了一个字符串,而不是一个数组.
json_decode在将数组返回流体之前,是否必须构建一个viewhelper ?还是有更原生的方式?
这是基本的控制器动作:
/**
* action show
*
* @param \NAMESPACE\Myext\Domain\Model\Item $item
* @return void
*/
public function showAction(\NAMESPACE\Myext\Domain\Model\Item $item) {
$this->view->assign('item', $item);
}
Run Code Online (Sandbox Code Playgroud)
作为使用自定义ViewHelper的替代方法,您可以在模型中使用瞬态属性.假设您的模型具有属性"jsonData",该属性是JSON编码的字符串.
现在,为它添加另一个属性$ jsonArray和一个getter:
/**
* @var array
* @transient
*/
protected $jsonArray;
Run Code Online (Sandbox Code Playgroud)
在getter中,您解码数据:
/**
* @return array
*/
public function getJsonArray() {
return json_decode($this->jsonData);
}
Run Code Online (Sandbox Code Playgroud)
瞬态属性就像虚拟属性.您不需要DB字段和TCA定义,也不能基于它进行查询,但您可以在对象中获得数据:
<f:for each="{item.jsonArray}" as="value">
{value}
</f:for>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |