/** * Implementation \Extlib\Mail\Message\MessageInterface::create() * * @param string $template * @return string|html */ public function create($template = null) { if (null !== $template) { $this->setScriptName($template); } $this->layout->assign('content', $this->layout->getView()->render($this->getScript())); return $this->layout->render(); }
/** * Set the e-mail's body from a template * * @param string $tempalte * @param array $params * @return Geves_Mail */ public function fromTemplate($template, array $params) { $view = new Zend_View(); $view->setScriptPath($this->_templateDir); $view->assign($params); if ($this->_layout) { $this->_layout->content = $view->render($template . '.phtml'); $html = $this->_layout->render(); } else { $html = $view->render($template . '.phtml'); } $this->setBodyHtml($html); $this->setBodyText(strip_tags($html)); return $this; }
/** * Sends mail to recipient(s) if log entries are present. Note that both * plaintext and HTML portions of email are handled here. * * @return void */ public function shutdown() { // If there are events to mail, use them as message body. Otherwise, // there is no mail to be sent. if (empty($this->_eventsToMail)) { return; } if ($this->_subjectPrependText !== null) { // Tack on the summary of entries per-priority to the subject // line and set it on the Zend_Mail object. $numEntries = $this->_getFormattedNumEntriesPerPriority(); $this->_mail->setSubject("{$this->_subjectPrependText} ({$numEntries})"); } // Always provide events to mail as plaintext. $this->_mail->setBodyText(implode('', $this->_eventsToMail)); // If a Zend_Layout instance is being used, set its "events" // value to the lines formatted for use with the layout. if ($this->_layout) { // Set the required "messages" value for the layout. Here we // are assuming that the layout is for use with HTML. $this->_layout->events = implode('', $this->_layoutEventsToMail); $this->_mail->setBodyHtml($this->_layout->render()); } // Finally, send the mail, but re-throw any exceptions at the // proper level of abstraction. try { $this->_mail->send(); } catch (Exception $e) { throw new Zend_Log_Exception($e->getMessage(), $e->getCode()); } }
public function sendEmail($template, $to, $subject, $params = array()) { try { $config = array('auth' => 'Login', 'port' => $this->_bootstrap_options['mail']['port'], 'ssl' => 'ssl', 'username' => $this->_bootstrap_options['mail']['username'], 'password' => $this->_bootstrap_options['mail']['password']); $tr = new Zend_Mail_Transport_Smtp($this->_bootstrap_options['mail']['server'], $config); Zend_Mail::setDefaultTransport($tr); $mail = new Zend_Mail('UTF-8'); $layout = new Zend_Layout(); $layout->setLayoutPath($this->_bootstrap_options['mail']['layout']); $layout->setLayout('email'); $view = $layout->getView(); $view->domain_url = $this->_bootstrap_options['site']['domainurl']; $view = new Zend_View(); $view->params = $params; $view->setScriptPath($this->_bootstrap_options['mail']['view_script']); $layout->content = $view->render($template . '.phtml'); $content = $layout->render(); $mail->setBodyText(preg_replace('/<[^>]+>/', '', $content)); $mail->setBodyHtml($content); $mail->setFrom($this->_bootstrap_options['mail']['from'], $this->_bootstrap_options['mail']['from_name']); $mail->addTo($to); $mail->setSubject($subject); $mail->send(); } catch (Exception $e) { // 这里要完善 } return true; }
/** * Sends mail to recipient(s) if log entries are present. Note that both * plaintext and HTML portions of email are handled here. * * @return void */ public function shutdown() { // If there are events to mail, use them as message body. Otherwise, // there is no mail to be sent. if (empty($this->_eventsToMail)) { return; } if ($this->_subjectPrependText !== null) { // Tack on the summary of entries per-priority to the subject // line and set it on the Zend_Mail object. $numEntries = $this->_getFormattedNumEntriesPerPriority(); $this->_mail->setSubject( "{$this->_subjectPrependText} ({$numEntries})"); } // Always provide events to mail as plaintext. $this->_mail->setBodyText(implode('', $this->_eventsToMail)); // If a Zend_Layout instance is being used, set its "events" // value to the lines formatted for use with the layout. if ($this->_layout) { // Set the required "messages" value for the layout. Here we // are assuming that the layout is for use with HTML. $this->_layout->events = implode('', $this->_layoutEventsToMail); // If an exception occurs during rendering, convert it to a notice // so we can avoid an exception thrown without a stack frame. try { $this->_mail->setBodyHtml($this->_layout->render()); } catch (Exception $e) { trigger_error( "exception occurred when rendering layout; " . "unable to set html body for message; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_NOTICE); } } // Finally, send the mail. If an exception occurs, convert it into a // warning-level message so we can avoid an exception thrown without a // stack frame. try { $this->_mail->send(); } catch (Exception $e) { trigger_error( "unable to send log entries via email; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_WARNING); } }
public function setViewBody($script, $params = array()) { $layout = new Zend_Layout(array('layoutPath' => $this->_getLayoutPath())); $layout->setLayout('email'); $view = new Zend_View(); $view->setScriptPath($this->_getViewPath() . '/email'); foreach ($params as $k => $param) { $view->assign($k, $param); } $layout->content = $view->render($script . '.phtml'); //$layout->content = $msg; $html = $layout->render(); $this->setBodyHtml($html); }
public function setBodyView($script, $params = array()) { $layout = new Zend_Layout(array('layoutPath' => APPLICATION_PATH . '/views/layouts')); $layout->setLayout('email'); $view = new Zend_View(); $view->setScriptPath(APPLICATION_PATH . '/views/email'); foreach ($params as $key => $value) { $view->assign($key, $value); } $layout->content = $view->render($script . '.phtml'); $html = $layout->render(); $this->setBodyHtml($html); return $this; }
public function __invoke($message) { $layout = new Zend_Layout(); // Установка пути к скриптам макета: $layout->setLayoutPath(APPLICATION_PATH . '/views/scripts/layouts'); $layout->setLayout('inner'); $view = new Zend_View(); $view->setBasePath(APPLICATION_PATH . '/views/'); $view->error_message = $message; // установка переменных: $layout->content = $view->render('/exeption/user.phtml'); echo $layout->render(); //echo $message; die; }
public function postDispatch() { $layouts = array_reverse($this->_layouts); $mvcLayout = Zend_Layout::getMvcInstance(); $mvcContentKey = $mvcLayout->getContentKey(); $content = $this->getResponse()->getBody(); $view = $this->_cloneView(); $layout = new Zend_Layout(array('layoutPath' => $mvcLayout->getLayoutPath(), 'viewSuffix' => $mvcLayout->getViewSuffix())); $layout->setView($view); foreach ($layouts as $layoutName) { $layout->setLayout($layoutName); $layout->{$mvcContentKey} = $this->getResponse()->getBody(); $this->getResponse()->setBody($layout->render()); } }
public function setBodyView($script, $params = array()) { $layout = new Zend_Layout(array('layoutPath' => APPLICATION_PATH . '/layouts')); //вибрати шаблон email.phtml $layout->setLayout('email'); $view = new Zend_View(); $view->setScriptPath(APPLICATION_PATH . '/views/email'); foreach ($params as $key => $value) { //Метод assign() дает возможность устанавливать значения //из массива или объекта "партиями". $view->assign($key, $value); } $layout->content = $view->render($script . '.phtml'); $html = $layout->render(); $this->setBodyHtml($html); return $this; }
/** * Build the txt part of the email using the provided scripts * * @return void */ private function _buildTextBody() { $viewContent = ''; if ($this->getTxtView()) { $viewContent = $this->view->render($this->getTxtView()); if (!$this->getTxtLayout()) { // no layout, render only the view $this->setBodyText($viewContent); } } if ($this->getTxtLayout()) { $this->_layout->setLayout($this->getTxtLayout()); $this->_layout->setView($this->view); // assign rendered view to the layout $this->_layout->assign('content', $viewContent); // render the layout $this->setBodyText($this->_layout->render($this->getTxtLayout())); } }
public function testMinimalViewObjectWorks() { require_once dirname(__FILE__) . '/_files/MinimalCustomView.php'; $layout = new Zend_Layout(array('view' => new Zend_Layout_Test_MinimalCustomView(), 'ViewScriptPath' => 'some/path')); $layout->render(); }
public function testLayoutWithViewBasePath() { $layout = new Zend_Layout(array('viewBasePath' => dirname(__FILE__) . '/_files/layouts-basepath/')); $this->assertEquals('layout inside basePath', $layout->render()); $layout->setLayout('layout2'); $this->assertEquals('foobar-helper-output', $layout->render()); }
/** * Render mail content using a view and template * * @param string $template * @param array $substitutions * @param array $placeholders * @param string $mode * @param string $layout * @param string $layoutPath */ public function getMailContent($template, $substitutions, $placeholders = array(), $mode = 'html', $layout = null, $layoutPath = null) { // Create the return variable $return = ''; // Create a view renderer $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $view = clone $viewRenderer->view; // Create a layout object and set it to app_path/emails/layouts if ($layoutPath === null || $layoutPath == '') { $layoutPath = PUBLIC_PATH . $view->templateUrl('') . 'email' . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR; } // Create the layout object $layoutObject = new Zend_Layout($layoutPath); // Add the script path to the view that overrules the default path $application = $this->getFrontController()->getParam('application'); $module = $this->getRequest()->getModuleName(); $scriptPath = $view->layout()->getViewScriptPath() . '/views/' . $application . '/modules/' . $module . '/'; if (!in_array($scriptPath, $view->getScriptPaths())) { $view->addScriptPath($scriptPath); } // Add the default email folder for the layout/template $view->addScriptPath(PUBLIC_PATH . $view->templateUrl('') . 'email' . DIRECTORY_SEPARATOR . 'views'); // Assign all substitutions (e.g. view variables) to the view view foreach ($substitutions as $key => $sub) { $view->{$key} = $sub; } // Replace all placeholders if (is_array($placeholders)) { foreach ($placeholders as $key => $sub) { } } // Set the view object to the layout object $layoutObject->setView($view); // Initialize a default layout if ($layout === null || $layout == '') { $layout = 'default'; } switch ($mode) { case 'html': // Render html version of template & assign to $return $layoutObject->content = $view->render($template . '.html.phtml'); // Set the layout $layoutObject->setLayout('' . $layout . '.html'); // Render the layout output $return = $layoutObject->render(); // Assimilate the stylesheet in the html $stylesheet = $layoutPath . $layout . '.css'; if (file_exists($stylesheet)) { $stylesheetContent = file_get_contents($stylesheet); $test = new CSSToInlineStyles($return, $stylesheetContent); $return = $test->convert(true); } break; case 'text': // Render text version of template & assign to $return $layoutObject->content = $view->render($template . '.text.phtml'); // Set the layout $layoutObject->setLayout('' . $layout . '.text'); // Render the layout output $return = $layoutObject->render(); break; } // Replace the placeholders in the content $return = $this->_replacePlaceholders($return, $placeholders); // all done, return output return $return; }
public function testRenderWithCustomInflection() { $layout = new Zend_Layout(); $view = new Zend_View(); $layout->setLayoutPath(dirname(__FILE__) . '/_files/layouts') ->setView($view); $inflector = $layout->getInflector(); $inflector->setTarget('test/:script.:suffix') ->setStaticRule('suffix', 'php'); $layout->message = 'Rendered layout'; $received = $layout->render(); $this->assertContains('Testing layouts with custom inflection:', $received); $this->assertContains($layout->message, $received); }