【问题标题】:Json to javascript in fluid-templates with extbase带有 extbase 的流体模板中的 Json 到 javascript
【发布时间】:2013-01-09 11:21:16
【问题描述】:

我试图在 javascript 变量中获取 json。我在我的 extbasetypo3-extension 中使用了流体模板。在我的操作中,我用 curl 加载了一些 json。我分配给模板的这个 json。在我的模板中,它看起来像:

<script type="text/javascript">
var json = {jsonVarFromControllerAction};
</script>

在这种情况下,json 被解释为 html 代码。它看起来像:

{&quot;content&quot;:&quot;testcontent&quot;}

在控制器动作中它是一个正确的 json!

{"content": "testcontent"}

解决办法是什么?

【问题讨论】:

  • 只在模板引擎中禁用引用

标签: javascript json typo3 fluid extbase


【解决方案1】:

使用&lt;f:format.htmlentitiesDecode&gt; ViewHelper 来解码,例如:

<script type="text/javascript">
    var json = <f:format.htmlentitiesDecode>{jsonVarFromControllerAction}</f:format.htmlentitiesDecode>;
</script>

您可以在typo3/sysext/fluid/Classes/ViewHelpers 中浏览所有可用的 ViewHelpers

其他选项是直接从使用 AJAX 的操作中获取使用 PHP 格式化的 JSON(不将其传递给视图),如果您想在不刷新整个页面的情况下获取新数据,这将非常有用。

【讨论】:

  • 这个viewhelper在typo3 4.5中可用吗?
  • 大声笑,不过你也可以从任何下一个版本(即 4.6 或 4.7)复制
【解决方案2】:

我编写了自己的视图助手。这个 viewhelper 只获取 json-content 和 html_entity_decode 它。

public function render($json)
{
    return html_entity_decode($json);
}

效果很好,但我问自己,为什么要写一个助手来获取自己变量的纯内容?

【讨论】:

    【解决方案3】:

    vhsformat.json.encode:

    <script type="text/javascript"> 
        var title = {v:format.json.encode(value: branch.name)};
        //.. do something
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 2017-09-01
      • 2018-08-05
      • 2015-08-25
      相关资源
      最近更新 更多