SelextBox: setPrompt v Nette 2.0.6

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

Po update na Nette 2.0.6 mi zacal trochu haluzit setPrompt.

Uvediem priklad:

$form->addSelect('char2', 'LABEL',
		array(
			"" => NULL,
			1 => 'First',
			2 => 'Second',
		)
	)
	->setPrompt('All options');

Vygeneruje HTML:

<select id="frmfilterForm-char2" name="char2">
	<option value="">All options</option>
	<option selected="selected" value=""></option>
	<option value="1">First</option>
	<option value="2">Second</option>
</select>

Je to spravanie v poriadku? Nech viem ci si to mam fixnut, alebo to bude v dalsej verzii opravene? :)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

V čem by měla spočívat chyba?

enumag
Člen | 2118
+
0
-

K čemu tam máš ten řádek "" => NULL, ? :-O

Editoval enumag (12. 11. 2012 12:29)

dodik
Člen | 10
+
0
-

Riadok NULL je len nejaka hovadina z DB.
A ten problem je prave v tom, ze ak je prva hodnota NULL a pred nou je prompt tak pri nacitani selectboxu nema byt oznaceny ako selected riadok s hodnotou null, ale ziadny a vtedy by bolo pri nacitani stranky vidiet v selecte „All options“.

V Predchadzajucej verzii nette to islo v poriadku a hodnotu NULL neoznacovalo ako predvyplnenu. Az po zmene „2012–08–30 (2231f8d): Forms: rewritten SelectBox [Closes #724]“ to takto zacalo vyhodnocovat. Mozno len tato prepisana trieda nekontroluje ci bola set-nuta nejaka hodnota.

David Grudl
Nette Core | 8228
+
0
-

Pokud tam tu hodnotu nechceš mít, tak ji ve výčtu neuváděj. Že se nezobrazovala ve <= 2.0.5 je chybou <= 2.0.5.

dodik
Člen | 10
+
0
-

David Grudl napsal(a):

Pokud tam tu hodnotu nechceš mít, tak ji ve výčtu neuváděj. Že se nezobrazovala ve <= 2.0.5 je chybou <= 2.0.5.

Jasne, rozumiem. Ja som tu hodnotu odstranil, ale aj tak si nemyslim, ze je spravne pokial oznaci <option> ako selected aj bez toho aby bol formular odoslany, alebo tato hodnota bola nastavena cez setDefaults().

Kazdopadne moj problem som vyriesil a toto bola len taka poznamka :)