Php 将对象传递给ZF2中的partial()视图帮助器

Php 将对象传递给ZF2中的partial()视图帮助器,php,zend-framework,zend-framework2,partials,Php,Zend Framework,Zend Framework2,Partials,我正在尝试将对象传递给partial()视图帮助程序。虽然使用普通变量工作正常,但我无法将对象传递给此函数 例如,在部分使用$this->test时,此选项可以正常工作: $this->partial("module/folder/partial.phtml", array( "test" => "foo", )); $this->partial("module/folder/partial.phtml", array( "test" => $this,

我正在尝试将
对象
传递给
partial()
视图帮助程序。虽然使用普通变量工作正常,但我无法将对象传递给此函数

例如,在部分使用
$this->test
时,此选项可以正常工作:

$this->partial("module/folder/partial.phtml", array(
    "test" => "foo",
));
$this->partial("module/folder/partial.phtml", array(
    "test" => $this,
));
但对
对象执行相同操作将不会导致任何部分:

$this->partial("module/folder/partial.phtml", array(
    "test" => "foo",
));
$this->partial("module/folder/partial.phtml", array(
    "test" => $this,
));
我甚至尝试过使用
setObjectKey
,但没有成功:

$this->partial()->setObjectKey("test");
$this->partial("module/folder/partial.phtml", $this);
是否有方法将
对象
传递给ZF2中的单个分部


我想这样做,因为我的视图实际上包含了许多部分需要的信息。我可以把它们一行一行地添加到partial中,但这只会增加开销…

当您将父项
Zend\View\Renderer\PhpRenderer
传递到partial时,它会用partial的
Zend\View\Renderer\PhpRenderer
覆盖/替换
$test
变量,就像它在重新使用类一样。因此,由于部分
PhpRenderer
不包含其他变量,因此导致对象为空

如果要从父级
PhpRender
中获取变量,请使用以下命令:

$this->partial('folder/partial',['vars'=>$this->vars()->getArrayCopy()]);
//或者是这样,所以您不需要将原件存储在vars密钥中
$this->partial('folder/partial',$this->vars()->getArrayCopy());
现在在partial.phtml中:

$this->vars['foo']
要确认这一点,请让控制器返回一些变量
['foo'=>'bar']
,或者使用一些测试变量设置一个
ViewModel
。现在设置您的部分:

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

当您调试或
var_dump()
您的PhpRenders变量时,您将看到
$render
包含值为abc的变量
$test
,而不是值为“bar”的键“foo”。因此,看起来PhpRenderer正在被重用,因此无法传递父级
PhpRenderer

partial viewhelper的第二个参数应该只是一个数组,并且您应该能够将对象或任何您想要传递给partial的内容传递给它。在分部中,应将键用作变量:
$test
以获取分部中的对象。也许您可以添加您尝试的结果以及如何在局部变量中调用变量。@Kwido如问题中所述,我使用了
$this->test
,但我也尝试了
$test
。但两者都不起作用。结果是,您无法访问部分中原始对象的任何属性。我做了更多的调试,父视图的
$this
和部分视图的
$test
都是类类型
Zend\view\Renderer\PhpRenderer
,通常是正确的。但是使用
$test->foo
访问部分中的属性不会返回任何内容,而在父级中使用相同的属性并使用
$this->foo
返回预期值。。。