Два способа:
1. Обновите Sp1 для сборки библиотеки
2. Пожалуйста, проверьте свою сборку, чтобы убедиться, что Оптимизация всей программы отключена. Для статического проекта lib перейдите на страницу свойств и измените «Свойства конфигурации-> C / C ++ -> Оптимизация-> Оптимизация всей программы» на «Нет».
С вашего контроллера:
// do this if you're not using the default layout
$this->_helper->layout()->disableLayout();
$this->view->data = $items;
$htmlString = $this->view->render('foo/bar.phtml');
Если вы делаете это из класса, который не является экземпляром Zend_Controller_Action, вам может потребоваться сначала создать экземпляр Zend_view, для этого:
$view = new Zend_view();
// you have to explicitly define the path to the template you're using
$view->setScriptPath(array($pathToTemplate));
$view->data = $data;
$htmlString = $view->render('foo/bar.phtml');
когда вы отправляете действие, вы можете перехватить событие в методе postDispatch () плагина, которое вы можете динамически добавлять в стек из желаемого действия.В том, что вы получаете содержимое ответа от
//in action
//...some php code
Zend_Controller_Front::getInstance()->registerPlugin(new My_Plugin());
//in plugin
$htmlCode = $this->_response->getBody();
Я не могу дать вам сверхдетального ответа, но если вам нужен полный вывод (включая макет), я думаю, вы хотите написать свою функцию электронной почты в качестве помощника Action и вставить ее в ловушку PostDispatch цикла Zend_Controller_Action-> dispatch ().
См. http://nethands.de/download/zenddispatch_en.pdf для полного обзора процесса отправки Zend Framework.
Если вам не нужен макет, включенный в ваше электронное письмо, вы можете сделать это во многих случаях, в том числе с помощью переключения контекста, как вы упомянули.