Kontaktni formular – chyba „Email address is not valid“
- TGhoul
- Člen | 1
Ahoj,
neovladam php (az na par drobnosti), ovsem rad bych nette na nejake veci vyuzil (tvorba statickych webu).
Pri tvorbe velmi jednoducheho kontaktniho formulare jsem se ovsem zasekl a nenasel jsem odpoved na internetu. Budu tedy rad za kazdou radu a posunuti vpred.
PHP Version 5.3.5–1ubuntu7.2
NetteFramework-2.0beta-PHP5.3
Mnou stvoreny kod je tento:
use Nette\Forms\Form;
use Nette\Mail\Message;
$form = new Form;
$form->addText('name', 'Jméno a příjmení:');
$form->addText('email', 'Email:')
->setEmptyValue('@')
->addRule(Form::FILLED, 'Vyplňte váš e-mail')
->addRule(Form::EMAIL, 'E-mail má nesprávný tvar');
$form->addText('predmet', 'Předmět:');
$form->addTextarea('text', 'Text:');
$form->addSubmit('send', 'Odeslat');
$values = $form->getValues();
$mail = new Message;
$mail->setFrom($values['name'], $values['email']);
$mail->addTo('muj@email.cezet')
->setSubject($values['predmet'])
->setBody($values['text'])
->send();
Vzdy mi ale vyskoci tato chyba:
Nette\InvalidArgumentException
Email address '' is not valid.
Cervene oznaceny radek s chybou:
$mail->setFrom($values['name'], $values['email']);
Pokud ovsem setFrom nahradim emailovou adresou ve spravem tvaru, chyba zmizi a nacte se html formular, tak jak by mel.
Jak tedy zaridit, aby se vyplnila emailova adresa a jmeno zadane ve formulari do inputu, ale vyhnout se teto chybe?
Dekuji mockrat,
hezky vecer vsem
Tomas
- bojovyletoun
- Člen | 667
Prostě ty se snažíš vytvořit mail, i když nebyl formulář odeslán,. Buď použij řešení nahoře a nebo pomocí událostí:
$form->addSubmit('send', 'Odeslat')->onClick[]=function($actualButton) /* use ($form) */ {
$theform=$actualButton->form; //1
//formulář získáme buď z tlačítka (1)
// nebo v proměnné $form - zpřístupněno přes use() ($form===$theForm)
$values=$theForm->values;
new Message...
};
Jelikož nepoužíváš UI\Form → je nutné ručně „oživit“
formulář:$form->fireEvents()
– zavoláš, až bude
formulář sestavený. „postará
se o zavolání příslušných metod včetně kontroly“, zdy byl form
odeslán.
Editoval bojovyletoun (26. 9. 2011 0:34)