【问题标题】:Passing string variables through include in twig and slim framework通过包含在树枝和苗条框架中传递字符串变量
【发布时间】:2015-10-08 18:31:05
【问题描述】:

我正在使用 Slim 框架和 Twig。

我想通过使用部分应用DRY。我有一个在多个视图中重复使用的表单,具有不同的变量,例如标题和路由(url)名称。

我正在努力研究如何使其适用于 url 名称。

例如,此链接使用 'urlFor' 帮助器,其参数如下:

<a href="{{urlFor('route.name', {parameter: value})}}">The link</a>

这就是我想要传递给部分模板的链接,因为它在每个视图中都不同,我想使用部分表单。我尝试了几种方法,但它不起作用。我不知道如何传递这个包含'的字符串。

例如,我在父视图中尝试过这样的部分调用:

{% include 'partials/partial.php' with {'theUrl': "urlFor('route.name', {parameter: value})"} %}

在部分内部是这样的:

<a href="{{theUrl}}">Show more</a>

它不起作用,因为在浏览器的 url 中我看到以下内容:

http://myproject.dev/pages/urlFor('route.name',%20%7Bparameter:%201%7D)

看起来它没有被正确地转义。在使用urlFor() 传递路线名称时如何解决这个问题?

【问题讨论】:

    标签: twig slim


    【解决方案1】:

    如果没有最大的可能性进行测试,我认为我发现了问题。您只是将函数添加到字符串中,并且不会给解析器解析该方法的机会,因为它基本上只是一个字符串。

    {% include 'partials/partial.php' with {'theUrl': "urlFor('route.name',{parameter: value})"} %}
    

    应该是

    {% include 'partials/partial.php' with {'theUrl': urlFor('route.name',{parameter: value})} %}
    

    【讨论】:

    • 您可以考虑使用{{ include() }} 函数而不是{% include %} 标记作为更好的做法,因为{% ... %} 用于控制模板的结构,其中{{ ... }} 用于渲染内容.不过你的回答很好。
    • 不是怀疑你,而是出于好奇。大多数包含与结构而不是渲染自然相关的内容。换句话说,使用包含而不是解析数据并使用重复等来呈现网页内容不是一种反模式吗?
    猜你喜欢
    • 2015-03-21
    • 2013-08-08
    • 1970-01-01
    • 2013-04-05
    • 2016-07-17
    • 1970-01-01
    • 2021-10-04
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多