Twig - принимать переменные как методы объекта

Это странно. Я пытаюсь реализовать соотношение 1: 1 между Twig и некоторыми объектами ViewModel, чтобы Twig знал о его контексте и предполагал, что переменные являются методами объекта.

Например, у меня есть шаблон Twig и ViewModel_Product. Я мог сделать это ...

$template->render(array('product', $product));

... а в шаблоне ...

<p>{{ product.name }}</p>

Однако, поскольку единственное, что когда-либо будет передано в шаблон, - это модель, кажется бессмысленным давать пользователям префиксы для каждой переменной. Лучше использовать:

$template->render(array('viewModel', $product));

...а также...

<p>{{ name }}</p>

Как я могу этого добиться?


person voteforpedro    schedule 31.05.2012    source источник
comment
Вы действительно хотите удалить префикс продукта? Он служит пространством имен и упрощает чтение и расширение кода.   -  person Nick Caballero    schedule 31.05.2012


Ответы (1)


Я не верю, что это возможно, потому что twig отслеживает другие глобальные переменные в каждом шаблоне, поэтому как он узнает, является ли переменная {{name}} частью вашего представления или какой-либо другой глобальной переменной? И, как уже упоминалось выше, наличие префикса переменной помогает пространству имен вашего представления, что упрощает чтение.

Не будь ленивым программистом.

person lifo    schedule 27.11.2012