2013-07-19 3 views
0

В настоящее время я испытываю странную проблему. Я создаю переменную из url с текущей страницы.Symfony добавляет% символов к моим переменным вместо квадратных скобок

{% set var = app.request.url %} 

И это работает на другой странице. Сгенерированный URL-адрес также в порядке;

site/banana[is_yellow]. 

К сожалению, мой URL выходит как Banana%20%5Bis_yellow:54%5D (при печати переменной). Мне нужна переменная, чтобы остаться Banana[is_yellow]

Таким образом, мой вопрос заключается в том, как заставить Symfony (или Twig?) Не заменять квадратные скобки случайными символами и цифрами?

+0

как вы печатаете переменную, можете ли вы включить код? – nifr

+0

{{var | raw}}, и для создания этой переменной {% set var = app.request.url%} –

+0

вы устанавливаете переменную в app.request.url и затем печатаете ее с помощью {{var | raw}}, и ваш шаблон показывает 'Banana % 20% 5Bis_yellow: 54% 5D'? вы указываете случайные строки .. меняется ли выход или это всегда 'банан% 20% 5Bis_yellow: 54% 5D'? – nifr

ответ

0

Я думаю, что URL-адрес уже вышел из запроса браузеров. Twig не поставляется с фильтром url_decode, чтобы соответствовать его url_encode one, поэтому вам нужно его написать.

в SRC/Ваш/Bundle/Twig/Extension/YourExtension.php

<?php 

namespace Your\Bundle\Twig\Extension; 

class YourExtension extends \Twig_Extension 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    public function getFilters() 
    { 
    return array(
     'url_decode' => new \Twig_Filter_Method($this, 'urlDecode') 
    ); 
    } 

    /** 
    * URL Decode a string 
    * 
    * @param string $url 
    * 
    * @return string The decoded URL 
    */ 
    public function urlDecode($url) 
    { 
    return urldecode($url); 
    } 

    /** 
    * Returns the name of the extension. 
    * 
    * @return string The extension name 
    */ 
    public function getName() 
    { 
    return 'your_extension'; 
    } 
} 

А затем добавьте его в конфигурацию служб в приложение/Config/config.yml

services: 
    your.twig.extension: 
     class: Your\Bundle\Twig\Extension\YourExtension 
     tags: 
      - { name: twig.extension } 

И затем используйте его!

{{ var|url_decode }} 
+0

Я пробовал использовать raw, но это не помогло моей ситуации. –

+0

отредактировал весь мой ответ. Надеюсь, это поможет –

+0

Работает! Спасибо большое!!! –

Смежные вопросы