Vykreslení Forms\Controls\Cokoliv by nemuselo být závislé na Formuláři

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

Občas potřebuji prostě jen vyhreslit nějakou formulářovou komponentu, třeba selectbox. Ne ve formu, něco co je například dále využívané ajaxem, nebo třeba jen slouží k vykreslení dat, nikoliv updatu! Příkladů by se pár našlo. Tak jsem si chtěl ulehčit život když jsem chtěl vykreslit selectbox.

$selectbox = new \Nette\Forms\Controls\SelectBox('neco', array('x' => 'y'));
print (string) $selectbox->control;

Tohle by bylo fajn kdyby vyplivlo selectbox. Ale bohužel to vyhodí víjimku že Compoent is not atteched to \Nette\Forms\Form a to pouze kvuli jmenu a id. V BaseControlu na řádku 386 a 388. Celkem škoda ne? Já bych to tedy rozhodně využil!

pawouk
Člen | 172
+
0
-

Ono by vlasně stačilo přidat do BaseControl metodu setHtmlName($name)… A pak by to šlo takto:

$selectbox = new \Nette\Forms\Controls\SelectBox('neco', array('x' => 'y'));
$selection->htmlId = 'nejakeid';
$selection->htmlName = 'nejakejmeno';
print (string) $selectbox->control;

Pak by toto fungovalo :-)