Neexistující callbacky nevyhazují chybu
- PJK
- Člen | 70
Jedna věc mě na Nette docela vytáčí:
Když pro události formuláře zaregistruji neexistující callback, tak se nic
neděje.
Např. když nastavím
$form->onSubmit[] = array($this, 'takTohleAniNemůžeExistovat,proboha+-*/');
tak formulář prostě nereaguje, a to je všechno.
Tohle chování znepříjemňuje vývoj… Co jsem si všimnul, tak třeba
onStartup na Application kontroluje, jestli je callback „callable“.
Co o tom víte a co si o tom myslíte?
- Vyki
- Člen | 388
PJK napsal(a):
Co o tom víte a co si o tom myslíte?
… že máš pravdu. Zkoušel jsem to i:
<?php
$form->onSubmit[] = callback($this, 'callbackNaNic9*[');
?>
a výsledek stejný jako při registraci callbacku „klasicky“. Chyba nastane až po odeslání. Určitě by bylo fajn kdyby to upozornilo na neplatnost callbacku už při registraci.
- PJK
- Člen | 70
a výsledek stejný jako při registraci callbacku „klasicky“. Chyba nastane až po odeslání. Určitě by bylo fajn kdyby to upozornilo na neplatnost callbacku už při registraci.
Nee, chyba nenastane. Ani když přehodím do produkčního a zapnu
logování, tak v logu nic není. To znamená, že je něco špatně.
A pokud jde o validaci při registraci, je trochu nepříjemné to, že co
není volatelné při registraci, může už být dostupné v momentě volání
callbacku. Spokojil bych se s tím, kdyby se to chovalo jako ono zmiňované
Application->onStartup/onShutdown (nebo s vysvětlením, proč to
tak není).
Jo a aby bylo jasno, je to Nette 0.9.4 ae0c8bd (php 5.3).
Editoval PJK (24. 7. 2010 0:35)
- Ondřej Mirtes
- Člen | 1536
Testuješ přidání callbacku i odeslání na jednom formuláři? Jakou máš verzi PHP?
- Ondřej Mirtes
- Člen | 1536
Seš po odeslání formuláře na adrese ?do=form-submit
?
Namísto form si dej název svého formuláře v továrničce (createComponentForm).
Pokud je to skutečně chyba ve frameworku a ne mezi klávesnicí a židlí, chtělo by odkrokovat, kde se to pokazí. Kdyžtak sem hoď zdrojáky a uvidíme.
- kravčo
- Člen | 721
Tipol by som to na chybu na inom mieste v aplikácii.
Nette\Callback
i skratka callback()
totiž
kontrolujú callback už pri
vytváraní.