这是一个奇怪的问题。我正在尝试在 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 }} 是您视图的一部分还是其他全局变量?如上所述,具有变量前缀有助于将视图命名为命名空间,从而更易于阅读。
不要做一个懒惰的程序员。