Nette 0.9 a HTML labely vo formulároch

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

Ahojte

Pravdepodobne som narazil na BUG v Nette verzii 0.9 (skúšané na revízii 480). Vo výsledku sa vnútro labelu vôbec nezobrazí. Vo verzii 0.8 to fungovalo. Zmenilo sa niečo, alebo je to chybka ?

<?php
$label = NHtml::el()->setHtml('Nejaky <small>(HTML label)</small>:');
$form->addText('inputname', $label);
?>
muta
Člen | 21
+
0
-

Ahoj,
právě řeším to samé ( poslední revize Nette ). Podařilo se ti to nějak vyřešit ?

zaxeeq
Člen | 17
+
0
-

Html::getHtml() obsahuje tohle:

final public function getHtml()
{
	$s = '';
	foreach ($this->children as $child) {
		if (is_object($child)) return FALSE;
		$s .= $child;
	}
	return $s;
}

a protože $child je v tomto případě objekt (konkrétně instance Html s nastaveným textem labelu) tak to skončí bez výsledku; tak nevím jestli je to chyba nebo feature :)

Foowie
Člen | 269
+
0
-

V ConventionalRendereru se při renderu labelu (pokud je label html prvek) provádí operace $label->setHtml($label->getHtml() . $suffix);

Na první pohled by to až zase tak nevadilo, ale problém je, že při Html::setHtml($html) se provede i $this->removeChildren(); a Html::getHtml() vrátí FALSE (jak výše zmínil zaxeeq), což dokonale odstraní vámi vložený Nette\Web\Html nadpis, který je jako „potomek“ v labelu =)

Fix na straně ConventionalRendereru by mohl být (snad) nahrazení řádku $label->setHtml($label->getHtml() . $suffix); za $label->add($suffix);

Editoval Foowie (11. 9. 2009 19:13)

muta
Člen | 21
+
0
-

diky, pořád ale nerozumím tomu, proč to dělá jen u addText, u ostatních to chodí

Foowie
Člen | 269
+
0
-

muta napsal(a):

diky, pořád ale nerozumím tomu, proč to dělá jen u addText, u ostatních to chodí

A u kterých to „chodí“ ?

muta
Člen | 21
+
0
-

např u addCheckbox a a zda se mi, že mi to chodilo i na radiolistu

Foowie
Člen | 269
+
0
-

Prozkoumej podmínku, kdy se operace $label->setHtml($label->getHtml() . $suffix); provádí a najdeš odpověď ;)

muta
Člen | 21
+
0
-

nj, ale není to čistě náhodou bug ? moc do toho systému nevidím, ale nechápu, proč na checkbox to jde a na jiné prvky ne. Co na to David ?

hanakus
Člen | 22
+
0
-

Nejspíš je to bug. Zvlášť když tohle řešení v jiném topicu radí sám David.

Navrhuji odstranění té zákeřné podmínky, je to přece na zodpovědnosti programátora jestli bude prasit html v presenteru, ne ? :-)

David Grudl
Nette Core | 8228
+
0
-

fixed