你如何在 Twig 中获取当前的 url?

How do you get the current url in Twig?

在树枝模板中,我将检查

if url is: http://example.com/search?keyword=test

{% set pageTitle = query %}  query is test

else

{% set pageTitle = different %}

我该怎么办?

谢谢。

Slim-Views 是你的朋友。通过作曲家安装它并添加 TwigExtension.

<?php
require 'vendor/autoload.php';

$app = new \Slim\Slim(array(
    'view' => new \Slim\Views\Twig()
));

$view = $app->view();

$view->parserExtensions = array(
    new \Slim\Views\TwigExtension(),
);

现在在您的模板中,您可以使用以下方式访问当前 url:

{% if currentUrl() == "http://" ~ domain ~ "/search?keyword=" ~ keyword %}
  {% set pageTitle = query %}
{% else %}
  {% set pageTitle = different %}
{% endif %}

要获得当前苗条 url 很简单,只需添加一个全局变量即可。 对于我的示例,我使用 PHP DI 和 Simple

$twig->getEnvironment()->addGlobal('currentUrl',$c->get('request')->getUri());

使用 Slim v3.8,您可以使用以下代码在 {{ current_path }} 变量中公开路径:

$container["view"] = function ($container) use ($menu) {
    $view = new \Slim\Views\Twig("../templates");
    $basePath = rtrim(str_ireplace("index.php", "", $container["request"]->getUri()->getBasePath()), "/");
    $view->addExtension(new Slim\Views\TwigExtension($container["router"], $basePath));
    $view->getEnvironment()->addGlobal("current_path", $container["request"]->getUri()->getPath());
    $view->getEnvironment()->addGlobal("menu", $menu);
    return $view;
};

这遵循 Templates 文档中描述的方法。