Использование «пути» и «актива» для нешаблонных данных - PullRequest
2 голосов
/ 26 сентября 2011

При создании шаблонов с помощью Twig легко использовать функции path и asset.

<a href="{{ path('my_route') }}"><img src="{{ asset('bundles/acmedemo/my_image.png') }}" /></a>

Тем не менее, некоторые из моих данных поступают из файлов, не связанных с ветками, или из базы данных. Каков будет правильный способ обратиться к этим функциям оттуда?

Пока что я использую регулярное выражение замены (preg_replace_callback) для функции пути. Но разве нет лучшего способа?

1 Ответ

3 голосов
/ 28 сентября 2011

Я с гордостью представляю свой первый публичный мини-проект, StaticBundle .Это в значительной степени позволяет включать любой файл в пакете прямо в шаблон.

Настройка

РЕДАКТИРОВАТЬ Теперь пакет можно установить с помощью composer, см. Инструкции на readme .

Добавьте следующее к deps:

[KGStaticBundle]
    git=git://github.com/kgilden/KGStaticBundle.git
    target=bundles/KG/StaticBundle

Выполнить bin/vendors install.

Зарегистрировать пространство имен в app/autoload.php:

'KG' => __DIR__.'/../vendor/bundles',

Зарегистрируйте пакет в app/AppKernel.php:

new KG\StaticBundle\KGStaticBUndle(),

Основное использование

Предположим, у нас есть файл src/Acme/Bundle/DemoBundle/Static/hello.txt, готовый для включения в шаблон.Нам нужно было бы использовать функцию file:

{# src/Acme/Bundle/DemoBundle/Resources/views/Demo/index.html.twig #}

{{ file('@AcmeDemoBundle/Static/hello.txt') }}

Логическое имя преобразуется в фактический путь, и простой file_get_contents извлекает данные.

...