odoslanie mailu po vyplneni formularu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- gandalf
- Člen | 4
ahojte snazim sa vytvorit formular ktory ked vyplnite tak udaje z neho sa poslu mailom, s nette len zacinam cize sa v nom moc nevyznam, v presenteri som vytvoril toto :
protected function createComponentPostForm() {
$form = new Nette\Application\UI\Form;
$form->addText('from', 'od koho:');
$form->addText('to', 'pre koho:')->setRequired();
$form->addTextArea('content', 'Obsah:')->setRequired();
$form->addSubmit('send', 'Ulozit a publikovat');
$form->onSuccess[] = $this->postFormSucceeded;
return $form;
}
use Nette\Mail\Message;
public function OdosliMail($form) {
$mail = new Message;
$mail->setFrom($form->from)
->addTo($form->to)
->setSubject('mailik')
->setBody($form->content);
return ($mail);
}
use Nette\Mail\SendmailMailer;
public function Poslat($mail) {
$mailer = new SendmailMailer;
$mailer->send($mail);
}
no a hadze mi error App\Presenters\HomepagePresenter cannot use
Nette\Mail\Message – it is not a trait
ale myslim si ze tie moje funkcie su blbosti
- David Matějka
- Moderator | 6445
- precti si o namespacech,
use
patreji na zacatek souboru, ne doprostred tridy - mas tam postFormSucceeded, ale vypada to, ze to chces zpracovat v OdosliMail
- ve
$form
nejsou primo hodnoty, ty ziskas pomoci->getValues()
, viz https://doc.nette.org/cs/forms#… - ty metody odesliMail a poslat se ti opravdu magicky nepropojeji :) A ani neni moc duvod mit dve metody. Dej si to do jedny…
- nevytvarej mailer rucne, injectni si
Nette\Mail\IMailer
- David Matějka
- Moderator | 6445
pridej do presenteru:
/** @var \Nette\Mail\IMailer @inject */
public $mailer;
(vse je dulezite – musi to byt public a musi to mit ony anotace)
a pak jen volej $this->mailer->send($mail);