Formulář macro form se neodesílá

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

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

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)

webdata
Člen | 153
+
0
-

Dik za rychlou odpoved. Přešel jsem na Nette 2.0.3 pro PHP 5.3. Tak v tom trošku plavu.