Подтвердить что ты не робот

Использовать помощники вида в контроллерах в Zend Framework

У меня есть контроллер, который вызывается с AJAX (отправляет данные JSON), поэтому я не использую представление.

Мне нужно использовать персонализированный помощник представления для форматирования моих данных, но в моем контроллере.

Возможно ли это?

Или, может быть, я делает это неправильно (может быть, мне нужно иметь представление, но как с JSON)?

4b9b3361

Ответ 1

Вы можете получить доступ к любому элементу ViewHelper из контроллера с помощью

$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);

См. Zend: как использовать пользовательскую функцию из помощника вида в контроллере?

Однако, возможно, вы правы, что делаете это неправильно (смешно pic btw), но я не могу сказать из вашего вопроса. Пожалуйста, уточните, почему вам нужно вызвать помощника вида и что он должен отформатировать.

Ответ 2

Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

Просто убедитесь, что возвращаемое представление - это представление, которое вы хотите. Потому что по линии, вид может быть перезаписан, а на контроллере у вас есть отброшенный новый вид.

И все те значения, которые вы настраиваете для представления на помощнике действий и т.п.... до того, как контроллер будет нажат? Все ушли с ветром!

Итак, перед тем, как предположить, что если вы получите ресурс просмотра, проверьте его. это действительно тот же ресурс, который вы ожидаете, и что все ваши вары все еще там.

Вы можете быть удивлены, как я!

Ответ 3

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

например.

// create Instance   
$serverUrl_helper = new Zend_View_Helper_ServerUrl();

// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();

Ответ 4

Другой подход - использовать ContextSwitch или AjaxContext action-helpers. Это позволяет использовать view- script, из которого вы можете затем вызвать свой помощник вида стандартным образом.

Ответ 5

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

Или непосредственно с помощью Zend_Date или sprintf.