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
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ím</p> <p>nevím</p> <p>jak</p> <p>mám</p> <p>udělat</p> <p>aby</p> <p>to </p> <p>bylo</p> <p>přesně</p> <p>jak </p> <p>to</p> <p>mám</p> <p>napsané</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
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}