Nastavenie (vytvorenie) vykreslenia formulara

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

Zdravim,
pokusal som sa nastavit si vlastny renderer na vykreslenie formulara. Postupoval som podla prikladov a nasiel som tuto konstrukciu:

$renderer->wrappers['form']['container'] = Html::el('div')->id('form');

vyskusal som aj

$renderer->wrappers['controls']['container'] = Html::el('table')->class('formlayout');

Ale ako nahle som chcel nastavit specificky class na obalovaci element pre control
napr:

$renderer->wrappers['control']['container'] = Html::el('td')->class('ctrl');

tak mi to vypisalo chybu:
Fatal error: [] operator not supported for strings in /var/www/share/Nette/Forms/Renderers/ConventionalRenderer.php on line 458

Robim nieco zle, alebo to nie je podporovane?

David Grudl
Nette Core | 8218
+
0
-

Je to tím, že atributy objektu Html mohou být řetězce nebo pole a ConventionalRenderer očekával pole. Fixnu to

Roman Pištěk
Člen | 10
+
0
-

Bylo by možné u objektu RadioList přidat setter pro $container a $separator?

Hodila by se možnost udělat z jednotlivých radio+label plovoucí boxy a řadit je vedle sebe namísto pod sebe.

David Grudl
Nette Core | 8218
+
0
-

To by mělo jít řešit přes gettery getSeparatorPrototype() a getContainerPrototype(). Vrátí objekty Html a můžeš jim doplnit stylování.

Roman Pištěk
Člen | 10
+
0
-

U $separator to jde, přes display: none se ho zbavím. Ale kontejneru (defaultně prázdnému uzlu) můžu jen přidat potomka, který je v DOM na stejné úrovni jako později přidaná radia.

Co přidat do RadioList renderovací alternativu <label><input /> ...</label> vedle současné <input /><label for="">...</label>?

David Grudl
Nette Core | 8218
+
0
-

Roman Pištěk napsal(a):

U $separator to jde, přes display: none se ho zbavím. Ale kontejneru (defaultně prázdnému uzlu) můžu jen přidat potomka, který je v DOM na stejné úrovni jako později přidaná radia.

Zrušit separátor: $control->getSeparatorPrototype()->setName(NULL);

Nebo udělat z něj mezeru: $control->getSeparatorPrototype()->setName(NULL)->setHtml('&nbsp;');

Co přidat do RadioList renderovací alternativu <label><input /> ...</label> vedle současné <input /><label for="">...</label>?

Nebude fungovat v IE.