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()