ako na deprecated odosielanie Message->send()

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

Zdravim,

v novom nette je deprecated metoda Message->send() s informaciou, ze treba odisielat pomocou maileru

ak chcem odosielat standartne cez php, ako to najjednoduchsie nastavit??

enumag
Člen | 2118
+
0
-

Injectni si Nette\Mail\IMailer a použij $this->mailer->send($message);.

buffus
Člen | 101
+
0
-

Nette 2.1 -dev PHP 5.3

Mohl bych poprosit o příklad, jak se injectne Nette\Mail\IMailer? Zkouším rozchodit jednoduchý kontaktní formulář s kódem z Planette » Vytváříme kontaktní formulář. Návod nyní platí pro Nette 2.0.8, ale rád bych ho upravil/rozběhal pro současnou verzi Nette 2.1 -dev.

Kód tak jak je vyhodí:
Nette\Mail\Message::send() is deprecated; use IMailer::send() instead.

Upravuji na

...
        $message = new Message;
        $message->addTo('test@gmail.com')
            ->setFrom($values['email'])
            ->setSubject('Zpráva z kontaktního formuláře')
            ->setBody($values['message']);
            //->send();
//+
$this->mailer->send($message);
...

což vyhodí:
Cannot read an undeclared property DemoApp\FrontModule\DefaultPresenter::$mailer.

Ale už nevím jak dál. Jak prosím nadefinuji $this->mailer?

enumag
Člen | 2118
+
0
-

V aktuální dev verzi např. takto. Pozor, ta proměnná musí být public.

/**
 * @var \Nette\Mail\IMailer
 * @inject
 */
public $mailer;

Editoval enumag (13. 6. 2013 21:02)

buffus
Člen | 101
+
0
-

Ajó! To byla rychlost. Díky. Už to běží :).