ZF2:如何在部分循环内使用Zend滤波器?

时间:2015-02-04 07:13:07

标签: zend-framework2 view-helpers

我有一个带有一些变量的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,因为两者都会影响性能。

1 个答案:

答案 0 :(得分:0)

部分具有自己的范围,因此您无法在部分内部使用父模板中的变量。

我对相同案例的解决方法(不是很漂亮,但有效):

<? foreach ($this->myModel as $element) : ?>
     <?=$this->render('my-template.phtml', ['model' => $element] + $this->vars()->getArrayCopy())?>
<? endforeach ?>