Zend Framework 2 - 调用View Helper在终端响应中重新呈现

时间:2014-03-15 06:34:09

标签: zend-framework2 viewhelper

我希望ZF2大师可以帮助我一点点。我刚刚开始将我的一个项目从ZF1转换为ZF2,我偶然发现了一段我不知道如何在ZF2中重写它们的代码。这是问题所在。

我有一个用户查看所选博客帖子的页面。在同一页面中,我有一个视图助手,显示帖子的所有评论,如下所示:

<?php echo $this->comments($blog->id); ?>

当用户在表单中提交注释时,注释将通过getJSON函数(jQuery)传输到控制器。控制器将存储注释并返回true / false到getJSON函数,具体取决于它们的注释是否有任何问题。

接下来发生的事情是同一个控制器,并且假设回显视图帮助程序,用户将看到新提交的注释显示在同一页面内。在我的ZF1代码中,我能够通过在控制器中包含以下代码来实现此目的:

首先,在ZF1控制器中定义了一个preDispatch函数:

public function preDispatch() {
        $this->session = new Zend_Session_Namespace('default');
        if (!$this->session->view) {
            $this->session->view = $this->view;
        }
    }

然后,在savecommentAction()中的某个地方,我只需要这样做:

echo $this->session->view->Comments();

用户视图中的评论将会更新。

有谁知道如何在ZF2中完成上述操作?我一直试图用ZM2找到一种方法用ViewModel做这个,但是我在过去的48小时里一直在摸不着头脑,我很快就会用尽头发。希望你们这些善良的人能帮助我弄清楚我错过了什么。

1 个答案:

答案 0 :(得分:0)

如果你只是想从你的行动中运行评论视图助手,你可以从视图帮助管理器中获取它:

$this->getServiceManager()->get('ViewHelperManager')->comments()

更新: 抱歉,它的serviceLocator不是经理,请使用此代码

$this->getServiceLocator()->get('ViewHelperManager')->comments()