ACC SHELL
<?php
use Nette\Mail\Message;
class HomepagePresenter extends BasePresenter
{
protected function createComponentAnswerForm()
{
$form = new \Nette\Application\UI\Form;
$form->addText('name', 'Jméno:')
->setRequired('Zadejte jméno');
$form->addText('email', 'Email:')
->setEmptyValue('@')
->addRule($form::EMAIL, 'Musí být ve tvaru emailu');
$form->addTextArea('note', 'Poznámka:')
->setRequired('Zadejte poznámku')
->addRule($form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 5000);
$form->addSelect('type','Oblast zájmu:')
->setRequired('Zadejte oblast zájmu');
$form['type']->setItems(array('Spolupráce' => 'Spolupráce', 'Produkty' => 'Produkty', 'Obecný dotaz' => 'Obecný dotaz'))->setPrompt('Zadejte');
$form->addSubmit('send', 'Odeslat');
$form->addProtection('Vypršel časový limit, odešlete formulář znovu');
$form->onSuccess[] = callback($this, 'answerFormSubmitted');
return $form;
}
public function answerFormSubmitted($form)
{
try {
$this->sendMail($form->getValues());
$this->flashMessage('Zpráva úspěšně odeslána!');
$this->redirect('this');
} catch (Nette\IOException $e) {
$form->addError($e->getMessage());
$this->flashMessage('Nepodařilo se odeslat e-mail, zkuste to prosím za chvíli.');
}
}
private function sendMail($values) {
$mail = new Message;
$mail->setSubject($values['type']);
$mail->setFrom($values['email'], $values['name']);
$mail->addTo('info@unitedsolution.cz', 'United solution');
$mail->setBody($values['note']);
try {
$mail->send();
} catch (Nette\InvalidStateException $e) {
throw new Nette\IOException('Nepodařilo se odeslat e-mail, zkuste to prosím za chvíli.');
}
}
}
ACC SHELL 2018