1

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

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

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

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

接下来发生的是相同的控制器,并且假设相同的操作回显视图助手,用户将看到新提交的评论显示在同一页面中。在我的 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 中完成上述操作?我一直试图想办法在 ZF2 中使用 ViewModel 来做到这一点,但在过去的 48 小时里我一直在挠头,我很快就会用尽头发来挠。希望你们中的任何人都可以帮助我弄清楚我在做这件事时缺少什么。

4

1 回答 1

0

如果您只想从您的操作中运行评论视图助手,您可以从视图助手管理器中获取它:

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

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

$this->getServiceLocator()->get('ViewHelperManager')->comments()
于 2014-03-15T16:29:34.350 回答