Передача объекта в представление part () в ZF2

Я пытаюсь передать object к partial() посмотреть помощник. Хотя работа с обычными переменными работает нормально, я не могу передать объект этой функции.

Например, это работает нормально при использовании $this->test частично:

$this->partial("module/folder/partial.phtml", array(
"test" => "foo",
));

Но делать то же самое с object ничего не приведет к частичному:

$this->partial("module/folder/partial.phtml", array(
"test" => $this,
));

Я даже пытался использовать setObjectKeyчто не проснулось тоже:

$this->partial()->setObjectKey("test");
$this->partial("module/folder/partial.phtml", $this);

Есть ли способ передать object в один частичный в ZF2?

Я хочу сделать это, потому что мой взгляд на самом деле содержит много информации о частичных потребностях. Я мог бы добавить их всех построчно к частичному, но это было бы просто накладные расходы …

1

Решение

Когда вы передаете родитель Zend\View\Renderer\PhpRenderer к вашему частичному будет перезаписывать / заменять $test переменная с Zend\View\Renderer\PhpRenderer вашего частичного, как будто это повторное использование класса. Таким образом, в результате получается объект, который пуст в качестве вашего частичного PhpRenderer не содержит никаких других переменных.

Если вы хотите, чтобы переменные от родителя PhpRender используйте следующее:

$this->partial('folder/partial', ['vars' => $this->vars()->getArrayCopy()]);
// Or so, so you don't need to store the originals within the vars key
$this->partial('folder/partial', $this->vars()->getArrayCopy());

Теперь внутри вашего part.phtml:

$this->vars['foo']

Чтобы подтвердить это, позвольте вашему контроллеру вернуть некоторую переменную ['foo' => 'bar'] или настроить ViewModel с некоторыми тестовыми переменными. Теперь настройте ваш частичный:

$this->partial('folder/partial.phtml', ['test' => 'abc' 'render' => $this].

И когда вы отлаживаете или var_dump() ваша переменная PhpRenders вы увидите, что $render содержит переменную $test со значением abc, а не с ключом ‘foo’ с ‘bar’ в качестве значения. Похоже, что PhpRenderer используется повторно, передавая родительский PhpRenderer это невозможно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]