将对象传递给 ZF2 中的 partial() 视图助手
Passing object to partial() view helper in 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 中的单个部分?
我想这样做,因为我的视图实际上包含了部分需要的许多信息。我可以将它们全部 逐行 添加到部分,但这只是开销 ...
当您将父级 Zend\View\Renderer\PhpRenderer
传递给您的部分时,它将 overwrite/replaces 带有您部分的 Zend\View\Renderer\PhpRenderer
的 $test
变量,就像它正在重新使用class。因此,由于您的部分 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());
现在在您的 partial.phtml 中:
$this->vars['foo']
为了确认这一点,让您的控制器 return 一些变量 ['foo' => 'bar']
或设置一个 ViewModel
一些测试变量。现在设置你的部分:
$this->partial('folder/partial.phtml', ['test' => 'abc' 'render' => $this].
并且当您调试或 var_dump()
您的 PhpRenders 变量时,您会看到 $render
包含变量 $test
,其值为 abc 而不是键 'foo'以 'bar' 作为其价值。所以看起来 PhpRenderer 正在被重用,所以传递父 PhpRenderer
是不可能的。
我正在尝试将 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 中的单个部分?
我想这样做,因为我的视图实际上包含了部分需要的许多信息。我可以将它们全部 逐行 添加到部分,但这只是开销 ...
当您将父级 Zend\View\Renderer\PhpRenderer
传递给您的部分时,它将 overwrite/replaces 带有您部分的 Zend\View\Renderer\PhpRenderer
的 $test
变量,就像它正在重新使用class。因此,由于您的部分 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());
现在在您的 partial.phtml 中:
$this->vars['foo']
为了确认这一点,让您的控制器 return 一些变量 ['foo' => 'bar']
或设置一个 ViewModel
一些测试变量。现在设置你的部分:
$this->partial('folder/partial.phtml', ['test' => 'abc' 'render' => $this].
并且当您调试或 var_dump()
您的 PhpRenders 变量时,您会看到 $render
包含变量 $test
,其值为 abc 而不是键 'foo'以 'bar' 作为其价值。所以看起来 PhpRenderer 正在被重用,所以传递父 PhpRenderer
是不可能的。