Úprava vykreslování Nette\Forms

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jan Tvrdík
Nette guru | 2595
+
0
-

Potřebuji změnit vykreslování Nette\Forms a přemýšlím nad tím, jak to udělat nejlépe.

Napadají mě dvě základní možnosti:

  1. Přímá editace souboru Form.php
  2. Vytvoření potomka třídy Nette\Forms\Form a přepsat vykreslovací funkce. Zde také naražím na problém kam takový soubor uložit.

Co je podle Vás nejlepší řešení?

phx
Člen | 651
+
0
-

O tomto jsem premyslel ted o vikednu. Idealni reseni by bylo asi pozadat Davida o oddeleni renderovacich metod do zvlastni tridy, ktera by se dala upravovat dle libosti. Osobne bych si to predstavoval jako FormRender. I kdyz nic nebrani tomu to udelat i ted.

Muj jediny pozadavek zatim je aby byla nejaka metoda render(), ktera vykresli vse co se nevykreslilo (to jiz je), ale kdyz ji dam nejake parametry napr: render('name', 'surname') tak aby vykreslila pouze tyto dva prvky. To znamena, ze bude nutne jeste rozkuchnout metodu render na 2 metody, ktere zajisti vykreslini zacatku tabulky a konce tabulky. Popripade na konci by slo dovykreslit vse co jeste vykresleno nebylo.

LM
Člen | 206
+
0
-

Vykreslování by měli řešit dekoratéry? jinak editaci přímo třídy Form bych se vyhnul, lepší dědit.

David Grudl
Nette Core | 8218
+
0
-

Vykreslovací rutiny jsou nyní umístěné v samostatné třídě, která se dá nastavit přes `$form->setRenderer($myRenderer)

ViliamKopecky
Nette hipster | 230
+
0
-

Ano, ano, to formulářům chybělo :) díky