Dvojí volání handle v komponentě

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

Zdravím,

nedaří se mi nějak identifikovat důvod toho, proč se mi volá handle<jmeno> v komponente dvakrat – ale zdá se, že jde o toto: mám obyčejný formulář (ne nette)

<form action="<?php echo $control->link("editComplete", $id) ?>">

kde promennou $control jsem ziskal z konstruktoru komponenty takto:

$control = $this;

Poprvé se zavolá handleEditComplete($id), což je v pořádku.. nicméně pak dojde z nějakého důvodu asi k přesměrování a zavolá se handler znovu, což je problém, protože v tom handleru se pracuje s proměnnou $_POST[data], která po přesměrování neexistuje. Mohl bych testovat, zda proměnná $_POST[data] existuje v handleru ale rád bych vyřešil ten problém rovnou a ne, že budu dělat podobné „triky“.

Díky za radu!

Ondřej Mirtes
Člen | 1536
+
0
-

Ahoj,
proč používáš MVC a přitom ne formuláře z Nette? Tímhle divokým kombinováním mohou vznikat jedině problémy.

MartyIX
Člen | 217
+
0
-

Ondrej: Protoze mam stary kod, ktery potrebuji na prechodnou dobu rozchodit a pozdeji, az bude vice casu, tak to prepisu, coz pujde, jelikoz to navenek zustane stejne.

Ondřej Mirtes
Člen | 1536
+
0
-

No ale tomu nerozumím. Kdybys měl nějaký starý systém a v něm zprovozňoval např. Nette\Forms, tak to pochopím, to je klasická situace. Ale ty už máš očividně MVC (máš tam určitě routování, komponenty a jejich továrničky v Presenterech) a nechceš použít formuláře, jejichž definice a zpracování je na pár řádků kódu?

Prostě to, o co se snažíš, je nepodporovaná varianta. Nadefinuj si formulář, napiš si metodu na zpracování odeslaného formuláře a vyhneš se tím problémům a zkrásníš svůj kód :)

MartyIX
Člen | 217
+
0
-

Ondrej: Nu dobre, rekneme, ze to tolik prace neni, ale tim, ze jsem zatim udelal jen jeden formular, tak mi to ze zacatku trva dele.

Nicmene tohle neni prece zadna nepodporovana ficura, protoze link mi generuje nette a jedine, co je navic je to, ze ten formular posila nejaka POST data → to snad prece nemuze vest k chovani popsanemu vyse.

Editoval MartyIX (13. 3. 2010 14:55)