Pridani kotvicky = ztrata validace formulare

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

Zdravim,

resim tu uz par hodin problem s kotvickou u formulare. Jakmile zadam

<?php

namespace App\Forms;

use Nette;
use Nette\Application\UI\Form;

$form = new Form;
$form->action .= '#kotva';
$form->addText('username', $this->_('E-mail'))
		    ->addRule(Form::EMAIL, $this->_('This e-mail address is not valid.'))
			->setRequired($this->_('Please enter your e-mail.'));

tak neprobehne validace. Pokud odstranim $form->action tak formular krasne vypise „Please enter your e-mail.“. S $form->action .= ‚#kotva‘; se formular jenom refresne a nic dal. Nette mam 2.3.8.

Casper
Člen | 253
+
0
-

Mrkni na toto, toto nebo toto vlákno. Při změně action se neposílá do parametr.

Vred
Člen | 9
+
0
-

@Casper dekuji ti za nakopnuti. Vyresil jsem to takto

$form->addHidden("do", "signUpForm-submit");

Jen pro zajimavost. Muze nekdo napsat proc tomu tak je? Z jakeho duvodu pri editaci action se „do“ nedela automaticky?

Šaman
Člen | 2668
+
0
-

Nebylo by to lepší naopak? Tu kotvu si přenést hidden parametrem a pak ji použít v redirectu? A na action nesahat?

Vred
Člen | 9
+
0
-

Ono nejde ani tak o kotvu. Problem je trosku jiny. Mam URL /presenter/action/id a to ID meni sablony a vykresluje pokazde jinak formular. Proto uprava action.

Šaman
Člen | 2668
+
0
-

Pro zpracování formuláře ho nepotřebuješ vykreslit jinak. Úprava action před zpracováním není ani nutná, ani vhodná. Teprve až ho zpracuješ, tak začni řešit kam zredirectuješ. Jestli se to id, nebo kotvička týká formuláře, tak to přenášej ve sktytém poli. Jinak je lepší použít buď persistentní parametry (typicky pro nastavení jazyka), nebo session.