Nefunkční input submit formuláře

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
iru
Člen | 110
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.