MailformControl – komponenta pro rychlé vytváření e-mailových formulářů
- nanuqcz
- Člen | 822
Ahoj,
divím se, že už tu podobná komponenta není, tak dávám
k dispozici svojí.
Github: MailformControl
Základní použití
protected function createComponentMailform()
{
$mailform = new MailformControl();
return $mailform; // automaticky vytvoří základní inputy (Jméno, E-mail, Zpráva, Odeslat), nastaví hlavičky e-mailů (from, to, subject) podle URL webu
}
Nastavení
// Hlavičky e-mailu
$mailform->setFrom('noreply@example.com'); // adresa odesilatele
$mailform->addTo('michal@example.com', 'Michal Mikoláš'); // adresa příjemce
$mailform->setSubject('Na tvojí stránce byl vyplněn kontakt!'); // předmět mailu
// Začátek e-mailu
$mailform->setBodyHeader('Na vašem webu byl vyplněn formulář s následujícími údaji');
// Konec e-mailu
$mailform->setBodyFooter('<hr><p align="right">vygenerováno systémem Xyz s.r.o</p>');
// Cesta k šabloně
$mailform->setTemplate(__DIR__ . '/mailform-contact.latte');
Vlastní formulář
$form = new Form();
$form->addText('accountNumber', 'Číslo vašeho bankovního účtu: ')
->addRule(Form::FILLED, 'Vyplň to číslo!');
$form->addSubmit('send', 'Pošli');
$mailform->setForm($form);
// Nebo
$mailform->form->addText('accountNumber', 'Číslo vašeho bankovního účtu: ')
->addRule(Form::FILLED, 'Vyplň to číslo!');
$mailform->form->addSubmit('send', 'Pošli');
Editoval xxxObiWan (27. 8. 2011 23:07)
- nanuqcz
- Člen | 822
No, minimálně se nemusíš starat o $form->onSuccess
metodu, tahle komponenta si sama vytáhne data z formuláře a vytvoří a
odešle jejich hodnoty e-mailem. Navíc většina mailformů, co jsem kdy
dělal, měla opravdu jen inputy „Jméno:“, „E-mail:“, „Zpráva:“ a
tlačítko pro odeslání, což je s MailformControl
hračka na
dva řádky.
Mě to určitě práci ulehčí, tak předpokládám že i dalším ;-)
- 22
- Člen | 1478
Nevím, osobně mě tyhle maily taky otravujou a už se na to chystám asi rok :-), napsat si nějaký helper, ale určitě bych to řešil nějakou třidou, kterou si instancuju až v submit metodě, kam pošlu jen v pole s e-maily, obsah mailu, subject, případně HTML šablonu. Takže mi to zabere pár řádků v submit metodě.
...
$mail = new MailBuilder();
$mail->build(array(
'from' => $formData->email,
'to' => 'aaa@mail.com',
...
));
$mail->send();
...
edit: respektive tu funkčnost tvoji bych udělal, jako nějaký mod →
simpleMail a poslal tam celý $form->values, ať si to roztřídí sám,
když se dodrží názvy polí ve formu..
tak by to bylo jen:
$mail = new MailBuilder($formData, 'simpleMail');
$mail->send();
Editoval 22 (28. 8. 2011 1:11)
- 22
- Člen | 1478
já ti rozumím, ale já mám většinou teda buď jen form, který pošle mail někam na podporu/poptávku/klasický mail kontak + confirm tomu, kdo mail posílá a tam si se 3 pevně danýma položkama určitě nevyjdu, vždy tam je nějaký identifikátor, selctboxy, checkboxy a já nevím co a ve druhé polovině případů se krom zaslání mailu s těma datama dál pracuje. Takže jo, ale je to moc jednoúčelové podle mě.
Editoval 22 (28. 8. 2011 1:23)