Odeslání textu emailu pomocí CKEditoru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wicked
Člen | 290
+
0
-

Zdravím Vás přátelé,

mám menší problém, používám ve své aplikaci formulář pro odeslání emailu. TextArea emailu je s CKEditorem.

Problém mám však ten, že když odešlu mail, zobrazují se mi html tagy v emailové zprávě.

NewslatterPresenter

protected function createComponentNewslatterForm() {
        $form = new Form();
        $form->addText('nadpis', 'Nadpis newslatteru')
                ->setRequired('Povinné');
        $form->addTextArea('text', 'Text:')
                ->setRequired('Povinné')
                ->getControlPrototype()
                ->class('ckeditor');
        $form->addSubmit('send', 'Odeslat')
                ->getControlPrototype()
                ->class('btn btn-info');

        // call method signInFormSucceeded() on success
        $form->onSuccess[] = $this->newslatterFormSucceeded;
        $form->setRenderer(new BootstrapRenderer);
        return $form;
    }

    public function newslatterFormSucceeded($form) {
        $values = $form->getValues();

        $mail = new Message;
        $mail->setSubject($values['nadpis']);
        $mail->setFrom('Jiřička Jakub <jiricka.kuba@gmail.com>');

        // Nacteni emalu z db
        $email = $this->newslatterModel->getAll()->where('aktivni', '1');

        foreach($email as $e) {

        $mail->addBcc($e->email);

        }

        $mail->setBody($values['text']);
        $template = $this->createTemplate();
        $template->setFile(__DIR__ . '/../templates/emails/newslatterMail.phtml');

        $template->nadpis = $values['nadpis'];
        $template->text = $values['text'];

        $mail->setHtmlBody($template);
        $mail->send();
        $this->flashMessage("Newslatter byl odeslán!", "alert alert-success");
        $this->redirect("default");
    }

a newslatterMail.phtml

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>{$nadpis}</title>
        <style>

        </style>
    </head>

    <body>
        {$text}
    </body>
</html>

Když odešlu mail, přijde mi toto:

<p>Zdrav&iacute;m</p> <p>nev&iacute;m</p> <p>jak</p> <p>m&aacute;m</p> <p>udělat</p> <p>aby</p> <p>to&nbsp;</p> <p>bylo</p> <p>přesně</p> <p>jak&nbsp;</p> <p>to</p> <p>m&aacute;m</p> <p>napsan&eacute;</p> <p>v</p> <p>textarei</p>

Prosím, jak mám tento problém odstranit? Aby mě to zachovalo formátování, které jsem si nastavil pomocí ckeditoru?

Děkuji
Wicked

Editoval wicked (4. 3. 2014 20:07)

David Matějka
Moderator | 6445
+
0
-

Nette to escapuje. Bud posli do sablony ten text jako html

$template->text = \Nette\Utils\Html::el()->setHtml($values['text']);

nebo v sablone vypni escapovani

pro 2.1:
{$text|noescape}
respektive pro 2.0:
{!$text}
wicked
Člen | 290
+
0
-
$template->text = \Nette\Utils\Html::el()->setHtml($values['text']);

Pomohlo ;)

Mockrát děkuji :-)