2013-10-28 4 views
0

У меня следующий прут блок в шаблоне, который проходит основной макет:Как получить источник блока ветви в шаблоне ветви?

{% block abc %} 
    {{ name }} 
{% endblock %} 

следующего У меня есть блок головки в одном шаблоне. Я хочу, чтобы передать блок аЬс как шаблон для twig.js:

{% block head %} 
<script type="text/html" id="template-abc"> 
    {{ blocksource('abc') }} 
</script> 
{% endblock %} 

поэтому результат рендеринга: {{имя}}

Как я могу это сделать?

Я попытался построить функцию «blockource» в расширении ветки, но я не знаю, как получить доступ к форме источника блока здесь.

function blocksource(Twig_Environment $env, $blockname) { 
    $source = ???; 
    return $source; 
} 
+0

Итак, вы хотите необработанное значение блока 'abc'? Другими словами, вы не хотите, чтобы Twig интерпретировал '{{name}}'? –

+0

Да, я хочу использовать тот же шаблон в шаблоне twif symfony2, а также на стороне клиента, используя javascript и twig.js – codez

ответ

0

Используйте вербальный тег, он будет делать то, что вы хотите.

{% verbatim %} 
    {{ things_you_want_to_show_as_twig_template }} 
{% endverbatim %} 

Все, что находится внутри этой метки, не будет интерпретироваться двигателем ветви.

Подробнее об этом вы можете узнать в twig documentation.

+0

, если я использую дословно, как я могу сделать этот блок на шаблоне ветви на стороне сервера? – codez

+0

Шаблон Twig, в общем, представляет собой просто строку со специальными тегами. Отдайте эту строку с помощью двигателя ветви. Вот пример из twig docs: $ loader = new Twig_Loader_String(); $ twig = new Twig_Environment ($ loader); echo $ twig-> render ('Hello {{name}}!', Array ('name' => 'Fabien')); – sickelap

+0

вы написали пример php. Но дословный блок будет расположен в шаблоне ветви. Как это сделать в ветке, а не в php. Так что в принципе мне нужен один блок ветви, который будет выводиться как простой источник ветви и визуализируется как шаблон ветви. – codez

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