Zend framework2 ZF2视图辅助对象中的嵌套视图

Zend framework2 ZF2视图辅助对象中的嵌套视图,zend-framework2,partial-views,view-helpers,Zend Framework2,Partial Views,View Helpers,我正在尝试创建一个ZF2视图帮助器,它输出不同显示格式的博客文章。 文章由页眉、正文和页脚组成 我尝试使用中的嵌套示例创建视图辅助对象 //邮政助理 public function __invoke( PostInterface $post, $is_single = true ){ $view_model = new ViewModel(); $view_model->setTemplate( 'editorial/partials/complete' ); $view_model-

我正在尝试创建一个ZF2视图帮助器,它输出不同显示格式的博客文章。 文章由页眉、正文和页脚组成

我尝试使用中的嵌套示例创建视图辅助对象

//邮政助理

public function __invoke( PostInterface $post, $is_single = true ){
$view_model = new ViewModel(); 

$view_model->setTemplate( 'editorial/partials/complete' );
$view_model->setVariable( 'object', $post );
$view_model->setVariable( 'is_single', $is_single );

$body_model = new ViewModel();
$body_model->setTemplate( 'editorial/partials/xx_display_format_partial_xx' );
$body_model->setVariable( 'object', $post );    
$view_model->addChild( $body_model, 'body' );
... repeat for header and footer

return $this->getView()->render( $view_model );
}
//编辑/部分/complete.phtml

echo $this->header;
echo $this->body;
echo $this->footer;
回显视图辅助对象时未收到任何错误。问题是,也没有输出

我想做的事可能吗?如果是,我做错了什么?

试试这个解决方案

它说pphrender实际上不渲染子视图。本教程从动作的角度展示了它是如何工作的,因为在这种情况下,视图是由Zend\view\view::render()渲染的

因此,问题的解决方案是以相同的方式渲染嵌套视图

更新 或者你可以做得更简单。只需分别渲染视图,并将每个输出作为变量附加到主视图。请参见一个示例:

$view = new ViewModel();
$body = new ViewModel();
$header = new ViewModel();
$footer = new ViewModel();

//... some setup

$view->setVariable('body', $this->getView()->render($body));
$view->setVariable('header', $this->getView()->render($header));
$view->setVariable('footer', $this->getView()->render($footer));


return $this->getView()->render($view);
它应该是相同的结果,并在您的任务方面更优化。Zend\View\View::render()中的代码比这个更复杂的原因是它监督所有可能的情况,但您不必为任务执行相同的操作。

尝试以下操作: 首先创建子模型,然后将子模型设置为父模型的变量

$body_model = new ViewModel();
$body_model->setTemplate( 'editorial/partials/xx_display_format_partial_xx' );
$body_model->setVariable( 'object', $post );    

$view_model = new ViewModel(); 

$view_model->setTemplate( 'editorial/partials/complete' );
$view_model->setVariable( 'object', $post );
$view_model->setVariable( 'is_single', $is_single );
$view_model->setVariable( 'body', $body_model );//<-----------------------------
$body_model=new ViewModel();
$body_model->setTemplate('editive/partials/xx_display_format_partial_xx');
$body_model->setVariable('object',$post);
$view_model=新视图模型();
$view_model->setTemplate('editive/partials/complete');
$view_model->setVariable('object',$post);
$view\u model->setVariable('is\u single',$is\u single);

$view\u model->setVariable('body',$body\u model)//问题不清楚,你说你没有收到错误,但问题是什么?这是我已经尝试过的方法。它可以工作,但是我希望能够使用下一个视图模型方法。现在,我必须使用这个方法。谢谢