Zend Framework 2 - вызвать View Helper для повторного рендеринга в ответе терминала

Я надеюсь, что гуру ZF2 помогут мне здесь немного. Я только начал преобразовывать свой проект из ZF1 в ZF2, и я наткнулся на сегмент моего кода, который я не знаю, как переписать их в ZF2. Здесь проблема.

У меня есть страница, где пользователи просматривают выбранный пост в блоге. На той же странице у меня есть помощник вида, который отображает все комментарии к сообщению, как это:

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

Когда пользователь отправляет комментарий в форме, комментарий передается через функцию getJSON (jQuery) на контроллер. Контроллер сохранит комментарий и вернет true/false функции getJSON, в зависимости от того, есть ли проблемы с их комментарием.

Далее происходит тот же контроллер, и предполагается, что то же действие повторяет помощник вида, и пользователь увидит, что вновь представленный комментарий отображается на той же странице. В моем коде ZF1 я смог сделать это, имея следующие коды в контроллере:

Во-первых, функция preDispatch определяется в контроллере ZF1:

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 часов я почесал голову, и у меня скоро кончатся волосы, чтобы поцарапать. Надеюсь, кто-нибудь из вас, добрые души, поможет мне понять, чего мне не хватает, чтобы сделать это.

1 ответ

Решение

Если вы просто хотите запустить помощник представления комментариев из своего действия, вы можете получить его из менеджера представления помощника:

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

ОБНОВЛЕНИЕ: извините его serviceLocator не менеджер, используйте этот код

$this->getServiceLocator()->get('ViewHelperManager')->comments()
Другие вопросы по тегам