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 ?>
Другие вопросы по тегам