Skip to content

Instantly share code, notes, and snippets.

@Kcko
Created February 2, 2018 11:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kcko/1ddf9d2ba43f12593e71f8ce334b943f to your computer and use it in GitHub Desktop.
Save Kcko/1ddf9d2ba43f12593e71f8ce334b943f to your computer and use it in GitHub Desktop.
nette, control, component, dynamic view, pohled, sablony
<?php
namespace App\FrontModule\Components;
use Nette\Application\UI,
Nette,
Nette\Mail\Message,
Nette\Mail\SendmailMailer,
App,
CardBook;
interface IContactUsFormFactory
{
/** @return ContactUsForm */
public function create ();
}
class ContactUsForm extends UI\Control
{
protected $userModel;
protected $mailer;
protected $messageFactory;
/** @persistent */
public $view;
public function __construct (App\Model\User $user, Nette\Mail\IMailer $mailer, App\FrontModule\Factory\MessageFactory $messageFactory)
{
parent::__construct();
$this->userModel = $user;
$this->mailer = $mailer;
$this->messageFactory = $messageFactory;
}
public function render()
{
if (!$this->view)
$this->template->setFile(__DIR__ . '/../templates/components/ContactUsForm/form.latte');
else
$this->template->setFile(__DIR__ . '/../templates/components/ContactUsForm/'.$this->view.'.latte');
$this->template->render();
}
public function createComponentForm()
{
$form = new UI\Form;
$form->addText("name", "Vaše jméno")
->addRule($form::FILLED, "Vyplňte prosím jméno");
$form->addText("email", "E-mail")
->addRule($form::FILLED, "Vyplňte prosím email")
->addRule($form::EMAIL, "Email není ve správném formátu");
$form->addTextArea("message", "Vaše zpráva")
->addRule($form::FILLED, "Vyplňte prosím Váš dotaz");
$form->addSubmit("send", "Odeslat");
$form->onSuccess[] = array($this, 'submitted');
return $form;
}
public function submitted($form)
{
$values = $form->getValues();
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/../templates/emails/contactus.latte');
$template->title = 'Napište nám';
$template->values = $values;
$mail = $this->messageFactory->create();
//$mail = new Message;
$mail->setFrom($values->email)
->addTo(CardBook\Settings::ADMIN_EMAIL)
->setSubject('Cardbook - napište nám')
->setHtmlBody($template);
$this->mailer->send($mail);
// $mailer = new SendmailMailer; 1)
// $mailer = new Nette\Mail\SmtpMailer(array( 2)
// 'host' => 'smtp.savana.cz',
// 'username' => 'podpora@cardbook.cz',
// 'password' => 'uL$g4GHl6AR'
// ));
// $mailer->send($mail);
// 3)
//
// arguments: [..., ..., %foo%, %bar%] #ano, opravdu dvojtecky
// nebo:
// arguments: [foo: %foo%, bar: %bar%]
// nebo:
// arguments: [2: %foo%, 3: %bar%]
if ($this->presenter->isAjax())
{
$this->view = 'save';
$this->redrawControl('contactUsForm');
}
else
{
$this->redirect("this", array('view' => 'save'));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment