在树枝中获取URL

时间:2019-04-16 12:51:35

标签: twig

需要在模板中获取URL。

我尝试使用get.request.url,但始终返回空白。我尝试过get.request.attributes.get('_ route'),它总是返回空白。由于我是树枝的新手,因此我确定我缺少一些基本且简单的内容。

1 个答案:

答案 0 :(得分:0)

在独立使用twig时,您需要自己传递信息。不过,您可以创建一个小型包装器类来解决这个问题。

Request.php

class Request {
    public function __construct() {}

    public function get($key) {
        return isset($_GET[$key]) ? $_GET[$key] : null;
    }

    public function post($key) {
        return isset($_POST[$key]) ? $_POST[$key] : null;
    }

    public function url() {
        $http = 'http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 's': '');
        return  $http.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    }
}

并将该类作为全局类注册到twig中:

<?php
    require_once __DIR__.'/vendor/autoload.php';
    $loader = new Twig_Loader_Filesystem(__DIR__.'/../views');
    $twig = new Twig_Environment($loader);
    $twig->addGlobal('request', new Request());

现在您可以在twig内使用包装器了

{{ request.url }}{# output current url #}
{{ request.get('variable') }}{# contents of $_GET['variable'] when set or null #}
{{ request.post('variable') }}{# contents of $_POST['variable'] when set or null #}