你如何获得Twig中的当前网址?

时间:2015-02-21 11:54:37

标签: twig slim

在树枝模板中,我会检查

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

{% set pageTitle = query %}  query is test

else

{% set pageTitle = different %}

我该怎么做?

谢谢。

3 个答案:

答案 0 :(得分:3)

使用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文档中描述的方法。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

Slim-Views是你的朋友。通过composer安装并添加 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(),
);

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

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