2016-06-26 2 views
0

Я хочу передать include как часть переменной, переданной в другой include. Позвольте мне нарисовать картину:Twig pass a include внутри include

{% include '@AppBundle/P1/template.html.twig' with { 
      'body': '<div class="col-xs-12"> 
        <h1>Dummy Title</h1> 
        include '@AppBundle/P1/Form/dummyForm.html.twig' with {'form': test_form } 
        '</div>' 
      }%} 

Возможно ли это? Я экспериментировал с экранированием строк и конкатенаций, но я всегда получаю «пунктуацию», ожидаемую со значением »,« 404. Мне действительно интересно, если кто-то столкнулся с такой проблемой, и если да, то как они преодолели ее. Спасибо вам всем!

+3

Почему вы не поместили включаемые внутри включаемого шаблона? – DarkBee

ответ

0

Hummm, чтобы ответить на ваш вопрос первый, вы можете использовать функцию вместо тега:

main.twig

{{ 
    include('@AppBundle/P1/template.html.twig', { 
     'body': include('@AppBundle/P1/dummyBody.html.twig') 
    }) 
}} 

dummyBody.html.twig

<div class="col-xs-12"> 
    <h1>Dummy Title</h1> 
    {{ include('@AppBundle/P1/Form/dummyForm.html.twig', {'form': test_form }) }} 
</div> 

Demo on twigfiddle


Но вы должны знать о blocks, это сделано для этого!

base.twig

<div class="col-xs-12"> 
    <h1>Dummy Title</h1> 
    {% block form %}{% endblock %} 
</div> 

form.twig

{% extends 'base.twig' %} 

{% block form %} 
    some form 
{% endblock %} 

Rendering form.twig покажет то же самое, но чище и легко использовать повторно.

Demo on twigfiddle

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