встроенный рендеринг шаблона + верстка в symfony - PullRequest
1 голос
/ 22 июня 2010

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

$template = new sfPartialView(sfContext::getInstance(), 'email', 'send', 'my_template');
$template->setTemplate('my_template');
$template->setDecoratorTemplate('my_layout');
$email = $template->render();

1 Ответ

1 голос
/ 25 июня 2010

Краткий ответ :

Тебе не хватает $template->setDecorator(true).

Длинный ответ :

Я расширяю sfMailer и добавляю функцию composeAndSendPartial, которая будет отправлять частичное на указанный адрес электронной почты. Если вы продлили sfMailer, обязательно обновите ваш factories.yml.

   /**
   * Composes and sends an email with a body from rending $partial with $parameters
   * @param string $from From address
   * @param string $to To address
   * @param string $subject Email subject
   * @param string $partial The partial to render. Can be in the form module/template, or simply template. If no module is provided,
   * module "email" is assumed
   * @param array $parameters An array of parameters to render the partial with
   */
    public function composeAndSendPartial($from, $to, $subject, $partial, $parameters = array())
      {    
        if (false !== $sep = strpos($partial, '/'))
        {
          $moduleName   = substr($partial, 0, $sep);
          $templateName = '_' . substr($partial, $sep + 1);
        }
        else
        {
          $moduleName = 'email';
          $templateName = '_' . $partial;
        }


        $view = new sfPHPView($context, $moduleName, $templateName, '');
        $view->getAttributeHolder()->add($parameters);
        $view->setDecorator(true);
        $view->setDecoratorTemplate('email.php');
        $html = $view->render(); //the contents of the rendered template

        $this->composeAndSendHtml($from, $to, $subject, $html); //properly sets email formats, attaches plain text version, etc.
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...