【问题标题】:Access Twig Variable in OctoberCMS Javascript file在 OctoberCMS Javascript 文件中访问 Twig 变量
【发布时间】:2018-09-04 10:52:16
【问题描述】:

我正在使用基于 Laravel 框架的 OctoberCMS,我在我的 html 文件中设置了变量 {% set name = 'Juan' %} 我正在尝试通过设置像这样的变量在我的 Javascript 文件中访问它 var myName = '{{ name }}' 我提醒变量myName,但不幸的是它没有显示变量myName,而是显示了像这样的整个字符串 {{ name }}

【问题讨论】:

  • 你应该把js代码放在Twig文件中,否则twig引擎不会处理
  • 但 OctoberCMS 已经将 Twig 作为他们的模板引擎。
  • @JOHNJASONMIGUEL 如果您需要,请在下面查看我的回答。
  • 我使用的是 OctoberCMS 而不是 Symfony。

标签: javascript twig octobercms


【解决方案1】:

问题是你在javascript中定义了整个事情

所以,模板引擎不知道你想要什么,我建议只是像这样在 Html 中定义变量

所以之前你已经这样做了。

{% set name = 'Juan' %}

所以现在要传递这个variable to js,为了简单起见,你可以做这样的事情。 [它不专业,我不建议这样做,我们可以使用我们的命名空间/对象并传递它]

<script>var myName = '{{ name }}';</script>

确保此行未写入 js 文件,它必须位于 .htm layout/templatemarkup section 之一中。

然后在整个项目中的 js 中你都可以访问它。

alert(myName);

如果它似乎与您无关,那么我们建议您发布可以执行此类操作的 laravel 代码,以便我们提供更好的相关解决方案。

如果您发现任何疑问,请发表评论。

【讨论】:

    【解决方案2】:

    好吧 javascript 文件不支持 twig 模板引擎所以它不会理解 什么是
    {{ name }} 变量。

    但是你可以在这里做一个解决方法

    在您的 .htm 树枝文件中,您可以在范围内打印变量并使其显示:无

    <span id="name" style="display: none;">{{ name }}</span>
    

    然后像这样将它调用到你的js文件中

    var name = document.getElementById("name").innerHTML
    

    或者如果你包含 jave jquery 那么你可以这样做

    var name = $("#name").val()
    

    希望对你有帮助

    【讨论】:

    • 对不起,这个答案不相关,我问这个问题是因为在 OctoberCMS 文档中没有关于这个的内容。与在 Laravel 框架中使用 Blade 模板引擎不同,您可以这样做 {{ route('profile') }} 希望 OctoberCMS 开发人员能注意到这一点。
    猜你喜欢
    • 2017-09-08
    • 2016-04-10
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多