【问题标题】:How do I use php inline with a twig template?如何将 php 内联与树枝模板一起使用?
【发布时间】:2023-03-06 16:15:01
【问题描述】:

这适用于刀片,但我如何在树枝中做到这一点? Twig 抛出以下错误:“打开的括号未正确关闭。值“:”的意外标记“标点符号”(“标点符号”应为值“)”)”

<li {{ (Request::is('admin/users') ? 'class=active' : '') }}>
    <a href="{{ route('users') }}">
        Users
    </a>
</li>

【问题讨论】:

  • Twig 已明确设置以防止原始 PHP、IIRC。
  • 你必须extend twig 来链接你想在twig中调用的方法

标签: php html laravel twig blade


【解决方案1】:

Twig 中的 if 语句与 PHP 中的 if 语句相当。

在最简单的形式中,您可以将它用于多个分支 elseif 和 else 可以像在 PHP 中一样使用。你也可以在那里使用更复杂的表达式:

{% if kenny.sick %}
    Kenny is sick.
{% elseif kenny.dead %}
    You killed Kenny! You bastard!!!
{% else %}
    Kenny looks okay --- so far
{% endif %}

如中所述:

https://twig.sensiolabs.org/doc/2.x/tags/if.html

但是你的例子没问题,你只需要去掉多余的括号 例如:

<li {{ Request::is('admin/users') ? 'class=active' : '' }}>
<a href="{{ route('users') }}">
    Users
</a>

【讨论】:

  • 谢谢,但我真的需要一个三元运算符,所以它包含在一行中。我找到了解决办法。
【解决方案2】:

您可以在 twig 中访问请求数据。此示例适用于 Symfony3 中的 Twig。

{% if app.request.requestUri == "admin/users" %} class='active'{% endif %}

或作为三元运算符

{{ app.request.requestUri == "admin/users" ? 'class="active"' }}

【讨论】:

    【解决方案3】:

    我自己找到了答案。我正在使用带有 rcrowe/TwigBridge 的 Laravel 5.1。我能够做到这一点:

    {{ app.request.is('admin/users') ? 'class=active' }}
    

    【讨论】:

      【解决方案4】:

      多余的括号不是问题。这是一个 TwigFiddle 向您展示:

      https://twigfiddle.com/623sqv

      三元组比使用 if 语句要容易得多,而且您的代码也大大简化了。你可以在我关于JSON and Twig Ternary OperatorUsing null-coalescing operator 的文章中了解它。

      您只需要始终弄清楚如何正确地进行三元比较。希望这会有所帮助!

      【讨论】:

        【解决方案5】:

        Twig 桥提供了对 laravel 的 Request 外观的扩展。它还提供其他扩展。在这里查看:https://github.com/rcrowe/TwigBridge#extensions

        您需要将它与_ 一起使用,而不是::,如下所示:

        {{ request_is('admin/users') ? 'class=active' }}
        

        【讨论】:

          猜你喜欢
          • 2012-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-07
          • 2016-05-11
          相关资源
          最近更新 更多