Odkazy v šabloně e-mailu – Undefined variable: _control
- thm
- Člen | 147
Asi to tak úplně ještě nechápu (obj.programování obecně), ale dle dokumentace zkouším odeslat e-mail s použitím šablony. Mám funkci createComponentPasswordRecoveryForm() kde pak volám $form->onSuccess[] = $this->passwordRecoveryFormSucceeded; níže uvedenou funkci:
public function passwordRecoveryFormSucceeded(UI\Form $form){
$values = $form->getValues();
$template = new Nette\Templating\FileTemplate(__DIR__.'/../templates/emails/passwordRecoveryEmail.latte');
$template->registerFilter(new Nette\Latte\Engine);
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
$template->email = $values->email;
$mail = new Nette\Mail\Message;
$mail->setFrom('admin <admin@admin.cz>')
->addTo($values->email)
->setSubject('Obnova hesla');
$mail->setHtmlBody($template)
->setMailer($this->context->mailer->getSmtpMailer())
->send();
$this->flashMessage('Na vaši e-mailovou adresu byl odeslán e-mail...');
$this->redirect('sign:in');
}
Spustím, napíšu email, odešlu form a Nette se zastaví na ->send() a zahlásí „Undefined variable: _control“ – tehdy, pokud v šabloně použiju a n:href=„presenter:action“, nebo makro link. Když tam žádný odkaz nepoužiju, e-mail se odešle.
Díky za jakoukoliv radu
- Petr Hudík
- Člen | 49
Vyzkoušej místo makra n:href
použít {plink}
.
Tedy:
<a href="{plink odkaz}">Text odkazu</a>
- jiri.pudil
- Nette Blogger | 1032
Asi ses nedočetl až k tomuto:
Pokud odesíláte e-mail v komponentě nebo presenteru, můžete vytvořit šablonu příkazem
$template = $this->createTemplate();
a poté budete moci generovat v šabloně i odkazy. Tvořte je vždy absolutní via{link //Presenter:action}