ZF2: Как я могу использовать Zend-фильтр внутри частичного цикла?
У меня есть сценарий просмотра 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 ответ
Частицы имеют собственную область видимости, поэтому вы не можете использовать переменные из родительского шаблона внутри партиала.
Мой обходной путь для тех же случаев (не очень красивый, но рабочий):
<? foreach ($this->myModel as $element) : ?>
<?=$this->render('my-template.phtml', ['model' => $element] + $this->vars()->getArrayCopy())?>
<? endforeach ?>