/**
* @var \MailformModule\Entities\MailformEntity
* @OneToOne(targetEntity="MailformModule\Entities\MailformEntity", cascade={"all"})
*/
protected $mailform;
public function __construct()
{
parent::__construct();
...
$this->mailform = new MailformEntity();
...
}
class FormFactory extends FormFactory
{
protected function getControlExtensions()
{
return array_merge(parent::getControlExtensions(), array(
new \CmsModule\Content\ControlExtension(),
new \FormsModule\ControlExtensions\ControlExtension(),
new \MailformModule\Forms\ControlExtensions\MailformExtension(),
));
}
public function configure(Venne\Forms\Form $form)
{
...
$form->addMailform('mailform');
...
}
}
Tato komponenta představuje front-end mailformu. Po odeslání formuláře dojde k automatickému rozeslání mailů podle konfigurace v MailformEntity
.
V našich aplikací budeme nejšastěji používat předpřipravenou službu @mailform.mailControl
, která jako parametr v konstruktoru dostává entitu MailformEntity
.
$onSuccess[] -> function(MailControl)
- událost po úspěšném odeslání formuláře a e-mailů.$onSendMessage[] -> function(MailControl, Message)
- událost před odesláním e-mailu. Slouží pro dodatečné úpravy odesílaného e-mailu.$onSendCopyMessage[] -> function(MailControl, Message)
- událost před odesláním kopie e-mailu odesílateli. Slouží pro dodatečné úpravy odesílaného e-mailu.
class FooPresenter extends \CmsModule\Content\Presenters\PagePresenter
{
/** @var Callback */
protected $mailControlFactory;
public function injectFormFactory(Callback $mailControlFactory)
{
$this->mailControlFactory = $mailControlFactory;
}
public function createComponentOrderForm()
{
$control = $this->mailControlFactory->invoke($this->page->mailform); # první argument představuje entitu mailformu
$control->onSuccess[] = $this->formSuccess;
return $control;
}
public function formSuccess(MailControl $control)
{
$this->flashMessage('Message has been sent', 'success');
$this->redirect('this');
}
}