我有一个带有一些变量的ZF2视图脚本,如下所示:
$this->myModel = array($object1, $object 2, $object 3);
$this->myContext = array(1, 2, 3, 4);
$this->myFilter = new Zend\Filter\Word\SeparatorToCamelCase();
视图脚本调用部分循环助手并传递模型:
$this->partialLoop->setObjectKey('model');
echo $this->partialLoop('my-template.phtml', $this->myModel)
在部分脚本中,我试图访问我的上下文并过滤如下:
$context = $this->viewModel()->getCurrent()->myContext;
$filter = $this->viewModel()->getCurrent()->myFilter;
以这种方式访问myConext工作正常,但在尝试将过滤器分配给$filter
时出错。 Zend View似乎希望将对象视为一个函数,因此调用了__invoke()
方法。这是为什么?
我不想在部分脚本中实例化过滤器,或使用StaticFilter
,因为两者都会影响性能。
答案 0 :(得分:0)
部分具有自己的范围,因此您无法在部分内部使用父模板中的变量。
我对相同案例的解决方法(不是很漂亮,但有效):
<? foreach ($this->myModel as $element) : ?>
<?=$this->render('my-template.phtml', ['model' => $element] + $this->vars()->getArrayCopy())?>
<? endforeach ?>