문제

I am currently writing some extensions in twig, but I am having trouble deciding why a certain extension should be implemented as a tag or a function.

Twig's documentation lists the following 2 constructs and what they do:

  • {{ }}: used to print the result of an expression evaluation;
  • {% %}: used to execute statements.

I am planning to implement something similiar to symfony2's embedded controllers.

Why is it that the feature is implemented as:

{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}

Since the embedded controllers function should return a fully rendered template for the requested controller, wouldn't a function be more appropriate?

render("AcmeDemoBundle:Demo:fancy", { 'name': name, 'color': 'green' });
도움이 되었습니까?

해결책

I was intereseted in the same question. It's up to you to decide.

If you use {{ }} you will be able to apply filters to the output: {{ render()|upper }}. If you use {% %} the output of your extension won't be "sanitized" (but you can always use {{ }} with array('is_safe' => array('all')).

render is an important construction. It's not just a function like {{ path() }} that you can call in an expression: {{ host ~ path() }}.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top