Как использовать визуализированный Zend View в JSON Object - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь использовать визуализированный вид в объекте JSON, а затем верните это клиенту. Как я могу сделать файл phtml, который на самом деле не принадлежат к конкретному действию?

Запрошенное действие от клиента не отображается. Затем он вызывает prepareForm (). Внутри этой функции я хочу сделать form.phtml и передать вывод ключу html массива.

private function prepareForm()
    {
        $json = Zend_Json::encode(array(
            'html' => $this->partial('form.phtml'),
            'role' => $this->role,
            'lang' => $this->lang
        ));

        echo $json;
    }

Как я могу сделать это в Zend Framework? Какой лучший способ сделать это?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Вам нужен экземпляр Zend View:

private function prepareForm()
{
    $view = new Zend_View();
    $path = '/../'; // Replace with path to phtml

    $view->addScriptPath($path);

    $json = Zend_Json::encode(array(
        'html' => $view->render('form.phtml'),
        'role' => $this->role,
        'lang' => $this->lang
    ));

    echo $json;
}
0 голосов
/ 21 февраля 2012

Вы можете отключить макет и просмотр, используя в вашем действии:

$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender();

Для меня echo с контроллеров - это не правильный способ сделать что-то. Шаблон MVC используется для разделения логики для просмотра. Вы можете просто отключить макет и назначить вашему представлению json для рендеринга следующим образом:

$this->view->json = $json;

и по вашему мнению:

<?= $this->json ?>

Если ваш запрос исходит из сценария Ajax, вы даже можете сделать вещи более привлекательными, используя помощник действий AjaxContext. Это позволит вам использовать одно действие, например, для разных типов запросов, и отобразить правильное представление в соответствии с типом запроса (Ajax и т. Д.).

...