gettery a settery: $control->label->text

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

Nevíte co dělám špatně? Když zavolám:

Debug::dump($f["jmeno"]->label->text);

dostanu null

ale tohle tohle normálně funguje:

Debug::dump($f["jmeno"]->getLabel()->getText());

dostanu: "Jméno: "

A myslím, že je to opravdu chyba, protože přesně tohle David psal v jednom příspěvku (->label->text)

Honza Kuchař
Člen | 1662
+
0
-

P.S.: Odkaz na to vlákno. https://forum.nette.org/…iewtopic.php?… (řešil se tady taky label)

LM
Člen | 206
+
0
-

Mezi $control->label a $control->getLabel() není prakticky rozdíl → vrací Nette\Web\Html objekt, kde ale zápis $label->text slouží k přístupu k atributům html elementu <label text="..." />.

pmg
Člen | 372
+
0
-

Problém je, že Nette\Web\Html metodu __get přepisuje, aby vracela atributy elementu.

kravčo
Člen | 721
+
0
-

Podobné je to napríklad pri Nette\Templates\Template, kde

$template = new Template;
$template->file = Environment::expand('%templatesDir%/foo.phtml');

nenastaví šablóne súbor, podľa ktorého sa vykreslí, ale nastaví jej premennú $file, ktorá je v šablóne prístupná… na nastavenie súboru treba volať $template->setFile()

Honza Kuchař
Člen | 1662
+
0
-

Děkuji za vysvětlení. ;)

pmg napsal(a):

Problém je, že Nette\Web\Html metodu __get přepisuje, aby vracela atributy elementu.

Tak to mě právě nenapadlo :( Ale je to zcela logické. :)

pmg
Člen | 372
+
0
-

Ale je to dobrá připomínka. :-) Podpora pro vlastnosti text a name by se do magického getteru mohla přidat. Třída Html by jen nemohla manipulovat s obecným XML, ve kterém se můžou objevit kolidující atributy. Feature request?

David Grudl
Nette Core | 8145
+
0
-

Zrovna třeba name je často používaný HTML atribut.

pmg
Člen | 372
+
0
-

Juj, to jsem si neuvědomil. :-(