Twig - 假设变量作为对象方法


Twig - assume variables as object methods

这是一个奇怪的问题。我正在尝试在 Twig 和某些 ViewModel 对象之间实现 1:1 关系,以便 Twig 知道其上下文并假设变量是对象上的方法。

例如,我有一个 Twig 模板和一个ViewModel_Product。我可以这样做...

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

。在模板中...

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

但是,由于唯一会传递给模板的是模型,因此让用户为每个变量添加前缀似乎毫无意义。更好的用法是:

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

。和。。。

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

我怎样才能做到这一点?

我不相信这是不可能的,因为 twig 会跟踪每个模板中的其他全局变量,所以它怎么知道变量 {{ name }} 是您视图的一部分还是其他全局变量?如上所述,具有变量前缀有助于将视图命名为命名空间,从而更易于阅读。

不要做一个懒惰的程序员。