2015-02-12 2 views
0

Я хотел бы использовать следующую внутреннюю часть Twig ExtensionИспользование locateResource внутри Twig Extension

$kernel = $container->getService('kernel'); 
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.png'); 

, но это включало прохождение в ядре, что плохо. Плюс я не мог заставить его работать в любом случае при попытке этого метода.

Как я могу получить доступ к пути ресурсов в пределах расширения Twig?

Расширение уже является сервисом. Я могу использовать Assetic, чтобы дать мне URL-адрес, но мне действительно нужен путь.

+0

можете ли вы обернуть его в сервис (так что вы можете использовать его и в другом месте) и использовать службу в расширении? – Matteo

+0

Это уже услуга. Я отредактирую и сделаю это более ясным. Как мне получить то, что мне нужно в услуге? –

ответ

1

У меня была аналогичная потребность: мне нужно было передать фильтру URL-адрес изображения, чтобы отобразить его в цикле for и построить строку.

Я прошел URL непосредственно в фильтр таким образом:

{% image '@AppBundle/Resources/public/images/my_asset.png' %} 
    {% set resolved_asset_url = asset_url %} 
{% endimage %} 

{{ my_var|filter_name(resolved_asset_url)|raw(html) }} 

Таким образом, шаблон Twig разрешения URL соответствующего ресурса, в устанавливает его в качестве переменной, а потом передать его в фильтр из внутри самого шаблона, без необходимости иметь дело с kernel или чем-то еще.

0

Если вы хотите просто выполнить загрузку, вы должны создать маршрут, который выполняет эту задачу.

Таким образом, вы будете называть локатор внутри маршрута и простой

{{ path('route_that_does_the_locator_thing') }} 

будет хорошо.

Если вам нужно вместо этого добавить файл в свой шаблон (например, CSS, JS ..), вам необходимо объявить файл как актив, возможно, используя Assetic.

+0

Его изображение, которое я хочу найти, используя Assetic, дайте мне URL-адрес, который невелик. Я хочу путь. –

+0

Зачем вам нужен путь вместо URL? – Jean

+0

Потому что я хочу использовать 'file_get_contents', а также другие вещи. Использование URL-адреса происходит медленнее. –

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