Dvojí volání handle v komponentě
- MartyIX
- Člen | 217
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
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.
- Ondřej Mirtes
- Člen | 1536
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
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)