Odkazy v šabloně e-mailu – Undefined variable: _control

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

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
+
0
-

Vyzkoušej místo makra n:href použít {plink}. Tedy:

<a href="{plink odkaz}">Text odkazu</a>
jiri.pudil
Nette Blogger | 1032
+
0
-

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}