Renderer formuláře – odlišná CSS pro component se submit tlačíky

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

Mám formuláře jako zvláštní třídu dědící z \Nette\Application\UI\Form, v konstruktoru přepisuju renderer, aby se zobrazovaly s použitím CSS frameworku Bootstrap od Twitteru.

Následující kód řeší většinu změn:

$renderer = $this->getRenderer();
$renderer->wrappers['controls']['container'] = NULL;
$renderer->wrappers['label']['container'] = NULL;
$renderer->wrappers['pair']['container'] = 'div class="control-group"';
$renderer->wrappers['control']['container'] = 'div class="controls"';

$this->getElementPrototype()->class('form-horizontal');

Potřebuju ale odlišnou CSS třídu pro container obsahující submit tlačítka formuláře. Ani v kódu, ani ve fóru jsem nenašel, že by fungovalo něco jako

$renderer->wrappers['pair.submit']['container'] = 'div class="action-forms"';

Jde to nějak jinak vyřešit?

Editoval jspetrak (4. 2. 2012 15:38)

pawouk
Člen | 172
+
0
-

Napadá mě napsat si vlastní renderer, to je asi nejčistší, ale asi bych to obešel tak že bych si tu třídu přidal pomocí jQuery, není to tak čisté, ale je to určitě rychlejší…

asparagus
Člen | 1
+
0
-

Včera jsem zrovna začal řešit stejný problém. Napsal jsem si vlastní renderer jak píše pawouk. Podle mě je přesně pro tyto účely určen.

Akorát se mi nepodařilo zjistit jak přímo v poli $wrappers přiřadit třídu elementu form a labelu. Jde to vůbec?

pawouk
Člen | 172
+
0
-

třídu formu lze jedině přes $form->getElementPrototype jak je psano v dotazu, přes wrapper to defaultRenderer neumí, nicméně pokud si píšeš vlastní renderer tak si to můžeš vyřešit v metodě renderBegin(), v label to bohužel taky defaultRenderer neumí, ale umí obalit label jiným elementem, což je skoro to samé, nenapadá mě kdy by to mohlo vadit. Obalit label elementem můžeš přes $wrapper[‚lable‘][‚container‘] = ‚span class=„labeltrida“‘

Hachik
Člen | 10
+
0
-

Uz sa ti to podarilo? Mam namysli spravit vlastny render pre „Bootstrap od Twitteru“

David Matějka
Moderator | 6445
+
0
-

hosiplan ho vytvoril https://github.com/…rerExtension