Jak nastavit výchozí vzhled všech formulářů

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

Zdravím,

jsem začátečník v nette a začínám dělat na administračním systému, který poběží na nette fw. Mám zakoupenou html/css šablonu a problém je v tom, že nette generuje formuláře v jiném formátu, než jaký má ta šablona. To bych asi ještě s pomocí dokumentace dokázal nějak nakonfigurovat (četl jsem něco o $wrappers), ale jsou tu i jiné věci…

Například pokud je input v seznamu (ul li), tak před něj mohu dát span s nějakou třídou a na začátku inputu budu mít ikonku. Nebo bych chtěl, aby to, co se normálně píše do labelu vedle inputu, aby se napsalo do placeholderu inputu (a pomocí nějaké funkce nebo atributu bych mohl nastavit případné použití labelu). A takových věcí je tu více.

V nette bych si to potom představoval nějak takto <?php $form->addText("name")->setIcon("user"); ?> a vygenerovaný kód by byl <span class="icon-user"></span><input type="text" placeholder="Name" ...>

Jak to mám udělat? Už jsem to zkoušel způsobem přímého přepsání nette souboru, což sice fungovalo, ale asi to není úplně nejlepší řešení…

Předem děkuji za odpovědi.

David Matějka
Moderator | 6445
+
+1
-
  1. tady mas par prikladu upravy renderovani (treba ty s bootstrapem). Pokud to nebude stacit muzes DefaultFormRenderer podedit a prekryt prislusne metody
  2. pro ikonku muzes pouzit setAttribute, pak v upravenem rendereru ji vykreslis

3.

Nebo bych chtěl, aby to, co se normálně píše do labelu vedle inputu, aby se napsalo do placeholderu inputu

tohle je UX fail. Kdyz vyplnis znak, tak najednou nevis, co vyplnujes… (vem si treba editacni form, kde budou hodnoty vyplnene)

Už jsem to zkoušel způsobem přímého přepsání nette souboru, což sice fungovalo, ale asi to není úplně nejlepší řešení…

Do nette nikdy nezasahuj. Pouze poded nejakou tridu, prekryj metody, nebo si rovnou napis vlastni renderer…

matopeto
Člen | 395
+
0
-

Stale si ten formular mozes vykreslit rucne…

Tepster
Člen | 28
+
0
-

matej21 napsal(a):

  1. tady mas par prikladu upravy renderovani (treba ty s bootstrapem). Pokud to nebude stacit muzes DefaultFormRenderer podedit a prekryt prislusne metody
  2. pro ikonku muzes pouzit setAttribute, pak v upravenem rendereru ji vykreslis

Jak mám ale potom nastavit, aby formulář používal právě můj poděděný renderer?

3. tohle je UX fail. Kdyz vyplnis znak, tak najednou nevis, co vyplnujes… (vem si treba editacni form, kde budou hodnoty vyplnene)

Na design jsem se sice neptal, ale děkuji.. Vlastně si teď uvědomuji, že použití placeholderu místo labelu bude v tom systému asi pouze jednou, takže bych si ten jeden formulář vykreslil ručně.

Do nette nikdy nezasahuj. Pouze poded nejakou tridu, prekryj metody, nebo si rovnou napis vlastni renderer…

Ok.

David Matějka
Moderator | 6445
+
0
-

Jak mám ale potom nastavit, aby formulář používal právě můj poděděný renderer?

$form->setRenderer(new MySuperRenderer());

pokud by ses o to nechtel starat u kazdeho formulare, musel by sis vytvorit tovarnu na zaklad formulare (ja mam takovouhle, ktera mi nastavi renderer a translator). Ale pak musis vsude, kde vytvaris form injectovat onu tovarnu

Facedown
Člen | 38
+
0
-

David Matějka napsal(a):

Jak mám ale potom nastavit, aby formulář používal právě můj poděděný renderer?

$form->setRenderer(new MySuperRenderer());

pokud by ses o to nechtel starat u kazdeho formulare, musel by sis vytvorit tovarnu na zaklad formulare (ja mam takovouhle, ktera mi nastavi renderer a translator). Ale pak musis vsude, kde vytvaris form injectovat onu tovarnu

Ahoj, dostal jsem se ke staršímu tématu a tak se chci jak bych měl přesně do komponenty injectnout tu danou továrnu, jako máš na githubu? Bude lepší použít konstruktor nebo anotaci inject v dané komponentě?

David Matějka
Moderator | 6445
+
+1
-

@Facedown konstruktor je rozhodne lepsi reseni, doporucuju mrknout na tento clanek v doc: https://doc.nette.org/…dependencies

Facedown
Člen | 38
+
0
-

David Matějka napsal(a):

@Facedown konstruktor je rozhodne lepsi reseni, doporucuju mrknout na tento clanek v doc: https://doc.nette.org/…dependencies

Dobře, děkuji.

Myiyk
Člen | 321
+
0
-

Vytvoř si vlastní univerzální šablonu pro formulář.

Příklad https://github.com/…s/form.latte

Editoval Myiyk (13. 6. 2015 1:30)