Chyba v Nette Form addSelect s kombinací addRule RANGE

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

poslední NETTE verze pro PHP 5.2 s prefixama

Chtěl jsem selecty ještě opatřit případnou kontrolou kdyby se je někdo pokoušel obejít tím že by do HTML dal například input.

public function createComponentTest() {
	$form = new NAppForm;
	$form->addSelect('time_from', '', array(8,9,10,11,12,13,14,15))->setPrompt('od')
	->addRule(NAppForm::RANGE, 'Chybně zadaný čas od', array(8,15));
	$form->addSelect('time_to', '', array(8,9,10,11,12,13,14,15))->setPrompt('do')
	->addRule(NAppForm::RANGE, 'Chybně zadaný čas do', array(8,15));
	return $form;
}

v LATTE potom

	{form test}{/form}

Na produkční serveru se mi z nějakého důvodu oběví Server Error a v logu toto:
*
[2011–09–22 09–57–54] PHP Fatal error: Uncaught exception InvalidArgumentException with message ‚Unknown operation ':range‘ for control ‚time_from‘.' in /var/home/www/zadostopujcku.cz/b3ta/application/libs/Nette/Forms/Rules.php:233 @ http://b3ta.zadostopujcku.cz/zadost-o-pujcku @@ exception 2011–09–22 09–57–54 db3220ab04eec4a2446a80cc71e7bf95.html
*

Editoval djdaca (22. 9. 2011 11:44)

bojovyletoun
Člen | 667
+
0
-

to validateRange má Textbase(text,textarea). a selectbox nedědí od textbase.

ale textbase::validateRange bere jako 1.parametr Textbase (!), takže jednoduše by tam nešlo vložit-
za další extensionmethod mi nefunguje u statických metod

takže zbývá si tento kód vykopírovat a použít vlastní callback jako pravidlo

Jan Endel
Člen | 1016
+
0
-

Jenom ještě připíšu, že tato kontrola je zbytečná, samo Nette samo o sobě kontroluje, jestli hodnota získaná ze selectboxu je v poli hodnot, co byly předhozeny pro výběr.

djdaca
Člen | 21
+
0
-

Je velice ale zvláštní že na serveru a na localhostu se to chová jinak, může to být rozdílnou verzí php ? (na serveru PHP 5.2 na localhostu PHP 5.3) .

Pilec: děkuji moc to jsem nevěděl

bojovyletoun
Člen | 667
+
0
-

pilec nekoukal jsem na to detailně, jen obecně
jak se to chová jinak?
ještě jedna věc: range(3,5)=array(3,4,5)

djdaca
Člen | 21
+
0
-

Na produkčním serveru se ukáže uživatelsky definovaná chyba (presenters/error.php) na localhostu nic, vše funguje v pořádku bez náznaku chyby.

bojovyletoun napsal(a):

pilec nekoukal jsem na to detailně, jen obecně
jak se to chová jinak?
ještě jedna věc: range(3,5)=array(3,4,5)

Aurielle
Člen | 1281
+
0
-

$application->catchExceptions = TRUE/FALSE je ten rozdíl.