Formulář macro form se neodesílá
- webdata
- Člen | 153
Zdravim,
Řeším následující problém.
V presenteru mám toto:
public function OnSuccessForm($form) {
echo 'odeslano';
}
public function createComponentMyForm($name)
{
$form = new Nette\Forms\Form;
//$form->addProtection();
$form->addText('text');
$form->addSubmit('save', 'Uložit');
$form->onSuccess[] = callback($this, 'OnSuccessForm');
return $form;
}
A v šabloně pak:
{form myForm}
{input text, name => 'val1' }
{input text, name => 'val2' }
{input save}
{/form}
A teď co je za problémy:
1. Když povolim $form->addProtection();, tak laděnka hlásí chybu
Cannot set cookie after HTTP headers have been sent (output started
at .....
2. Vubec se neprovede odesláni formuláře na ‚OnSuccessForm‘.
3. To že používám v šabloně {input text, name ⇒ ‚val2‘ } je
z toho duvodu že mám
dtb například sloupce val1, val2. Uživatel se však rozhodne že chce ješte
přidat hodnotu
var3 tak do šablony přidá {input text, name ⇒ ‚val3‘ } a v Db
vytvoří sloupes s nazvem val3.
Takže zasahuje jen do DB a šablony. Což vypadá že funguje. Tento bod je zde
pouze proto
zda je toto z hlediska nette alespoň trochu čisté.
4. Dá se v makru form u prvku formuláře nějak jednoduše nastavit validační pravidlo?
Předem dík za reakce,
- Tomáš Votruba
- Moderator | 1114
Ahoj, problém je jednoduchý – v použití třídy. V MVC
architektuře, tedy presenterech se používá
Nette\Application\UI\Form
. To by mělo problém odstranit. Více
výhradně o této třídě se dočteš
zde.
3. Čisté je prvky přidat v továrničce. Pokud mají proměnlivý počet se stejnými parametry, je vhodné použít replicator.
4. Ne, to je také třeba v továrničce.
Editoval Schmutzka (6. 4. 2012 1:07)