Twig: ํฌํ•จ, ํฌํ•จ ๋ฐ ๋งคํฌ๋กœ โ€“ ์–ธ์ œ ์žฌ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€?

์— ๋งŒ๋“  2015๋…„ 05์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: twigphp/Twig

์ด๊ฒƒ์€ ์ œ ํ”„๋ก ํŠธ์—”๋“œ ์ง์›๋“ค์ด ์ œ๊ฒŒ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ, ์ €๋Š” ๋ชจ๋“  ์ƒํ™ฉ์— ๋งž๋Š” ์ข‹์€ ๋Œ€๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋ฌธ์„œ๋„ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์ฝ”๋“œ ๋ธ”๋ก์€ ๋Œ€๋žต ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํฌํ•จํ•˜๋‹ค

# someFile.html.twig
{% set foo = "Foo!" %}
{% set bar %} {# <-- omit this assignment if you want the default #}
   even more bar
{% endset %}
{% include "reused.html.twig" %}

# reused.html.twig
<h1>{{ foo }} </h1>
<p>Some common stuff.</p>
{% if bar %}
    {{ bar | raw }} 
{% else %}
    <p>Default text for bar.</p>
{% endif %}

ํฌํ•จ์‹œํ‚ค๋‹ค

# someFile.html.twig
{% embed "reused.html.twig" %}
    {% block foo %} Foo! {% endblock %}
    {% block bar %} {# <-- again, this may be omitted #}
       even more bar
    {% endblock %}
{% endembed %}

# reused.html.twig
<h1>{% block foo %}{% endblock %} </h1>
<p>Some common stuff.</p>
{% block bar %}
    <p>Default text for bar.</p>
{% endblock %}

๋งคํฌ๋กœ

# someFile.html.twig
{% import "reused.html.twig" as macros %}
{% set bar %} {# <-- omit this assignment if you want the default #}
   even more bar
{% endset %}
{{ macros.someBlock("Foo!", bar) }}

# reused.html.twig
{% macro someBlock(foo, bar) %}
<h1>{{ foo }} </h1>
<p>Some common stuff.</p>
{% if bar %}
    {{ bar | raw }} 
{% else %}
    <p>Default text for bar.</p>
{% endif %}
{% endmacro %}

๊ฐ€๋…์„ฑ, ๊ฐ„๊ฒฐ์„ฑ ๋˜๋Š” ๋ช…์‹œ์  ์ธํ„ฐํŽ˜์ด์Šค(๋งคํฌ๋กœ ์„œ๋ช…)๋ฅผ ๊ฐ–๋Š” ์ด์  ๋ฐ ์บก์Šํ™”/๋ฒ”์œ„ ์ง€์ • ๋ณ€์ˆ˜์˜ ์ด์ ์„ ํฌํ•จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋งŽ์€ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ๊ฑฐ๋‚˜ ์–ด๋Š ๊ฒƒ์„ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ๊ฒฝํ—˜ ๋ฒ•์น™์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋งํ•  ํ•„์š”๋„ ์—†์ด ์—ฌ๊ธฐ์„œ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ฉด ๋ฌธ์„œ PR์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค :-).

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋งคํฌ๋กœ: ๋งŽ์€ ํ…œํ”Œ๋ฆฟ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งˆํฌ์—…
ํฌํ•จ: ๊ฐ€๋…์„ฑ ๋ฐ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด ์ถ”์ถœ๋œ "ํŽ˜์ด์ง€"์˜ ์ผ๋ถ€
Embed: @stof ๊ฐ€ ์œ ์šฉํ•  ๋•Œ ์„ค๋ช…๋จ(๋ธ”๋ก ์žฌ์ •์˜)

๋ชจ๋“  3 ๋Œ“๊ธ€

ํฌํ•จ ๋Œ€ ํฌํ•จ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‘˜ ์‚ฌ์ด์˜ ์„ ํƒ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํฌํ•จ๋œ ํ…œํ”Œ๋ฆฟ์˜ ์ผ๋ถ€ ๋ธ”๋ก์„ ๋ฎ์–ด์จ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํฌํ•จ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์ด ํƒœ๊ทธ์˜ ๋ชฉํ‘œ). ๋ธ”๋ก์„ ๋ฎ์–ด์“ธ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ํฌํ•จ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋” ๋น ๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€์ˆ˜์˜ ๋ฒ”์œ„ ์ง€์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ด๋Š” ํฌํ•จ ๋˜๋Š” ํฌํ•จ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. http://twig.sensiolabs.org/doc/tags/include.html

๋งคํฌ๋กœ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด์„œ๋Š” ์‹ค์ œ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งคํฌ๋กœ: ๋งŽ์€ ํ…œํ”Œ๋ฆฟ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งˆํฌ์—…
ํฌํ•จ: ๊ฐ€๋…์„ฑ ๋ฐ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด ์ถ”์ถœ๋œ "ํŽ˜์ด์ง€"์˜ ์ผ๋ถ€
Embed: @stof ๊ฐ€ ์œ ์šฉํ•  ๋•Œ ์„ค๋ช…๋จ(๋ธ”๋ก ์žฌ์ •์˜)

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ตฌ์„ฑ ์š”์†Œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋งคํฌ๋กœ/ํฌํ•จ์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ๋ธ”๋กœ๊ทธ๋ผ๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค .

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰