Nefunkční input submit formuláře
- iru
- Člen | 110
Ahoj,
mám formulář, který se mi neodesílá a už nějakou dobu se s tím
trápím a nemůžu přijít na to proč.
Formulář:
public function createComponentObjednavkaForm()
{
$form = new Nette\Application\UI\Form;
$form->getElementPrototype()->role[] = "form";
$form->addText('jmeno', $this->translator->translate('messages.form.jmeno'))
->setRequired($this->translator->translate('messages.form.jmeno_povinne'));
$form->addText('prijmeni', $this->translator->translate('messages.form.prijmeni'))
->setRequired($this->translator->translate('messages.form.prijmeni_povinne'));
.......
$form->addSubmit('send', $this->translator->translate('messages.form.objednat'));
$form->onSuccess[] = $this->KontaktFormSucceeded;
return $form;
}
Formulář vykresluji v šabloně manuálně:
<form n:name=objednavkaForm>
<ul class=error n:if="$form->ownErrors">
<li n:foreach="$form->ownErrors as $error">{$error}</li>
</ul>
<input type="text" n:name="jmeno" value="{_messages.form.jmeno}" onfocus ="if (this .value == {_messages.form.jmeno})this .value=''">
<input type="text" n:name="prijmeni" value="{_messages.form.prijmeni}" onfocus ="if (this .value == {_messages.form.prijmeni})this .value=''">
<input type="text" n:name="email" value="{_messages.form.email}" onfocus ="if (this .value == {_messages.form.email})this .value=''">
<input type="text" n:name="telefon" value="{_messages.form.telefon}" onfocus ="if (this .value == {_messages.form.telefon})this .value=''">
...... další prvky ...
<input n:name=send>
</form>
A onsuccess, tady už se skript nevykoná:
public function KontaktFormSucceeded($form)
{
try {
$this->sendMail($form->getValues());
$this->flashMessage($this->translator->translate('messages.form.odeslano'));
$this->redirect('this');
} catch (\Nette\InvalidStateException $e) {
$form->addError($this->translator->translate('messages.form.nepodarilo_se_odeslat_email_zkuste_to_prosim_za_chvili'));
}
}
Mám úplně stejný formulář na jiném webu a v pořádku funguje. Vše je totožné, jen zde u toho nefunkčního, když si zobrazím zdrojový kód, tak za submit je:
<input type=„hidden“ name=„do“ value=„objednavkaForm-submit“></form>
nevím, kde se to tam vzalo, formulář nemá žádný hidden input, ani žádný jiný s name=„do“
Budu vděčná za pomoc.
- CZechBoY
- Člen | 3608
Když navážeš na onSubmit tak se provede?
$form->onSubmit[] = function ($form) {
dump($form->getValues());
};
Parametr do uchovává informaci jaký formulář byl odeslán, tzn. je to nette políčko, který je u každýho formuláře.
Jinak existuje atribut placeholder, který je takovou krátkou nápovědou co do políčka napsat.
- iru
- Člen | 110
CZechBoY napsal(a):
Když navážeš na onSubmit tak se provede?
$form->onSubmit[] = function ($form) { dump($form->getValues()); };
Parametr do uchovává informaci jaký formulář byl odeslán, tzn. je to nette políčko, který je u každýho formuláře.
Jinak existuje atribut placeholder, který je takovou krátkou nápovědou co do políčka napsat.
provede, výsledek:
Nette\Utils\ArrayHash #8388
jmeno ⇒ „Iveta“ (5)
prijmeni ⇒ „Příjmení“ (11)
email ⇒ „email@seznam.cz" (20)
telefon ⇒ "Telefon“ (7)
adresa ⇒ „Adresa“ (6)
foto ⇒ Nette\Http\FileUpload #5e3a
| name private ⇒ NULL
| type private ⇒ NULL
| size private ⇒ NULL
| tmpName private ⇒ NULL
| error private ⇒ 4
varianta ⇒ 1
material ⇒ 2
doprava ⇒ 1
poznamka ⇒ „Vaše zpráva“ (13)
souhlas ⇒ FALSE
web ⇒ ""
- iru
- Člen | 110
CZechBoY napsal(a):
Když navážeš na onSubmit tak se provede?
$form->onSubmit[] = function ($form) { dump($form->getValues()); };
Parametr do uchovává informaci jaký formulář byl odeslán, tzn. je to nette políčko, který je u každýho formuláře.
Jinak existuje atribut placeholder, který je takovou krátkou nápovědou co do políčka napsat.
Díky, pomohl jsi mi najít chybu. Ve výpisu jsem si všimla hodnoty:souhlas ⇒ FALSE, je to checkbox, který je povinný a i když jsem ho zaškrtla, měl hodnotu false, protože jsem v šabloně měla value="". Opraveno, vše už funguje, problém vyřešen.