obj['prop']๋ obj๊ฐ ๋ฐฐ์ด์ด๊ณ ๋ณ์์ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ์์ฑ์ ๊ฐ์ ธ์ฌ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ฐ์ ๋ฐํํฉ๋๋ค. obj[propName]์ null์ ๋ฐํํฉ๋๋ค.
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ๊ฒ์ฌํ๋ ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก obj.name์ ๋จผ์ obj['name']์ ์ฐพ์ ๋ค์ obj->name๊ณผ ๋ง์ง๋ง obj->getName()์ ์ฐพ์ต๋๋ค. ์ด์ ๋ํด์๋ ์ค๋ช ์์์๋ ์์ธํ ์ค๋ช ํฉ๋๋ค. ๋์์ด๋๋ฅผ ์ํ ๋๋ญ๊ฐ์ง ์ฅ ์๋์ ์์ต๋๋ค.
artyv์ ๋ฌธ์ ๋ ๋จ์ํ ์คํ์ /์์ฑ์ ์ก์ธ์คํ๋ ๊ฒ๊ณผ๋ ๋ฐ๋๋ก ๊ฐ์ฒด ์์ฑ์ ๋์ ์ผ๋ก ์ก์ธ์คํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
/* php */
$obj = new stdClass;
$obj->foo = "bar";
$template->render(array('obj, $obj));
/* twig */
{% set prop as "foo" %}
{{ obj.foo }}
// outputs "bar"
{{ obj.$prop }}
// (pseudo-code)
// would compile down to {{ obj.foo }} and output "bar"
jwpage๊ฐ ๋ง์ต๋๋ค. ๋ด๊ฐ ๊ฐ์ ธ์์ผ ํ๋ ์์ฑ ์ด๋ฆ์ ๋ค๋ฅธ ๋ณ์์ ์์ผ๋ฏ๋ก ์ด PHP ์ฝ๋์ ๋๋ฑํด์ผ ํฉ๋๋ค.
$obj->{$propName}
$obj๋ ๋จ์ํ ๊ฐ์ฒด์ด๊ณ ArrayAccess๋ฅผ ๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์
์ด ๊ธฐ๋ฅ์ Twig์ ํฌํจ๋์ง ์์ต๋๋ค. Twig๋ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ธ์ด๊ฐ ์๋ ํ ํ๋ฆฟ ์์คํ ์ ๋๋ค. ๋์ ์์ฑ์ ๋ถ๋ช ํ Twig ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
์ง๋ ฌ ๋ณํ๊ธฐ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ฒฉ๋ stdClass ์ธ์คํด์ค๋ฅผ ์ค์ฒฉ๋ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ stdClass๋ฅผ ๋ฐฐ์ด๋ก ํ์ ์บ์คํ ํจ์ผ๋ก์จ ๋ณํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ ์ง๊ธ๋ณด๋ค ๋ ์ด๋ ต๊ฒ ๋ง๋์ธ์ :)
[~] php -r '$class = new stdClass;$class->prop = "hejsa";print_r((array) $class);'
Array
(
[prop] => hejsa
)
@henrikbjorn : ์ ์ ํ ์บ์คํ ์ด ์๋ํ์ง๋ง ์ฌ๊ท์ ์ผ๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ง๋ ฌ ๋ณํ๊ธฐ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ ๊ฒ์ ๋๋ค. ๋ถ๋ช ํ ๋น์ ์ด ๊น์ด ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด ๋ถ๋ช ํ ๋ฐฐ์ด๋ก ์บ์คํธํ๋ฉด ๋์ ๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๊ฒ์ด ์ผ์ ํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ์๋๋ผ๋ ๊ฒ์ ์์ง๋ง ํ์คํ ๊ฐ์ฅ ๊นจ๋ํด ๋ณด์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์์ฝ๋ฉ๋๋ค.
function twig_get_filter()
{
$params = func_get_args();
$object = array_shift($params);
$field = implode('', $params);
return $object->$field;
}
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
{{ object|get(text, '_', language, '_', type) }}
๋์ ์์ฑ์ ๋ถ๋ช ํ Twig ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
์์? symfony datagrid์ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฐํ๋ ค๊ณ ํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
{# columns #}
{% for name, column in grid.columns %}
<td>{{ column.render(row[name])|raw }}</td>
{% endfor %}
๋ด ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋์์ Twig_Template::getAttribute ๋ฉ์๋์ ๊ฐ์ ๊ฒ์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์๋ฃจ์ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ๋ณดํธ์ ์ธ์ง ์ข์ํฉ๋๋ค.
๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์ด๊ณ ์ํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ๊ฒ ์ํํ๋ ํจ์๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์(ํ ์คํธ๋์ง ์์):
function twig_array_get_function($array, $name)
{
return $array[$name];
}
์ฉ๋ฒ:
row|array_get(name)
์, ์ด๋ ์ด์ ๊ฒฝ์ฐ ์ฝ์ต๋๋ค. ๋ฌธ์ ๋ Twig์์ ์ด๋ฏธ ๊ตฌํ๋ ๊ฐ์ฒด ๋ฑ์ getter์ ์ก์ธ์คํ๋ ๊ฒ๋ ๊ตฌํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค(ํ์ง๋ง ์ด ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค).
์ข์ ์์! 1.2๋ถํฐ๋ ์๋ก์ด attribute
ํจ์๋ฅผ ํตํด ๋ณ์์ ๋ํ ๋์ ์์ฑ์ ์ป์ ์ ์์ต๋๋ค(c609060 ์ฐธ์กฐ).
์ด์ ๋ํ ์ง์์ด ์ถ๊ฐ๋ ๊ฒ์ ๋ณด๋ ๋ฐ๊ฐ์ต๋๋ค. ์ ๋ ์ด์ ๋ง Twig๋ฅผ ์์ํ์ต๋๋ค. ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ธ๊น์?
{{ ๊ฐ์ฒด.{์์ฑ} }} ๋๋ {{ ๊ฐ์ฒด.{๋ฉ์๋}(์์ฑ) }}
๋๋ ๊ทธ๊ฒ์ด {{ attribute(object, method, arguments) }}๋ณด๋ค ์กฐ๊ธ ๋ ๊นจ๋ํ๋ค๊ณ โโ์๊ฐํฉ๋๋ค.
์๋ง๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋๋ฅผ ๊ฐ๋ฆฌ์ผ ์ฃผ์๊ฒ ์ต๋๊น? ์์ง ๋ชจ๋ ์์ค ์ฝ๋๋ฅผ ์ดํด๋ณด์ง๋ ์์์ต๋๋ค.
@rspenc29 : ํ ํ๋ฆฟ์์ ์ด๊ฒ์ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ ๋ฒ ์๊ฐํ๊ธฐ๋ฅผ ์ํ๋ฏ๋ก "๊นจ๋ํ๊ฒ" ๋ง๋ค๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ๋ค๋ฅธ ๊ณณ์์ ์ํํด์ผ ํ๋ ํ ํ๋ฆฟ์์ ๋ญ๊ฐ๋ฅผ ํ๊ณ ์๋ค๋ ๋์์ ๋๋ค.
๊ด์ฐฎ์์. ๋๋ ๊ทธ๊ฒ์ ์์๋ผ ๊ฒ์ด๋ค.
asd ์ ์ฉ
๋น์ ์ ์๋ ํ ์ ์์ต๋๋ค
{{ attribute(object, method) }}
{{attribute(obj, foo)}}
http://twig.sensiolabs.org/doc/2.x/functions/attribute.html
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ ์ ์๋ ํ ์ ์์ต๋๋ค
{{ attribute(object, method) }}
{{attribute(obj, foo)}}
http://twig.sensiolabs.org/doc/2.x/functions/attribute.html