Как записать вывод Zend view вместо фактического вывод его

Проблема: иногда в нашем контроллере zend мы не хотим, чтобы сценарий выводился напрямую, а нам нужно содержимое этого сценария. Один пример: когда нам нужно, чтобы результат html-вывода сценария представления был включен в другую структуру, такую ​​как JSON или XML, для обработки на стороне клиента.

Я нашел результат здесь при переполнении стека, но не так быстро, поскольку он был в другой контекст. Я вот уже 2 дня борюсь с этим. Как оказалось, это было очень просто:

    // in our controllers' action method
    $this->_helper->layout()->setLayout('empty');    // disable layout
    $this->_helper->viewRenderer->setNoRender(true); // make sure the script is not being rendered

    // any of your code here
    $html = $this->view->render('projects/climate.phtml');  // return the view script content as a string
    $json = array('html'=>$html, 'initData'=>'my other needed data');
    echo json_encode($json);

Надеюсь, это было понятно и будет кому-нибудь полезно.

6
задан mindless.panda 15 June 2011 в 22:54
поделиться