změna class name pro input ve formu
- masterr
- Začátečník | 141
Zdravim,
$form->addText('sklad', 'Skladem kusů:')
->addRule(Form::FILLED, 'Vyplňte sklad.')
->addRule(Form::NUMERIC, 'Sklad musí být číslo.')
->getControlPrototype()
->class('w60');
<input gtbfieldid="70" **class="w60 text"** name="sklad" id="frmaddgoodsForm-sklad" value="" type="text">
Potřebuji přehodit na class=„text w60“ nebo jen class=„w60“, ale nevim jak na to, jak to mam udelat?Thx
- westrem
- Člen | 398
Aky je (z tvojho pohladu) rozdiel medzi?
class="w60 text"
a
class="text w60"
Podla mna ziadny.
Ak by si vsak potreboval tu druhu variantu tak pouzi:
// pouzivam pristup cez pole aby som skratil zapis tu na fore, kludne to nahrad v tvojej definicii
$form['sklad']->getControlPrototype()->setClass('w60');
- masterr
- Začátečník | 141
No jde mi o dědičnost, když mám class=„w60 text“ tak nejprve dědí od w60 a pak od text, jenže já to potřebuji naopak, takle se mi přepíše hodnota width.
Nebo tam dát jen to w60.
To tvoje mi nefunguje pořád je to stejný. Dá se nějak nastavit aby tam nebyla ta třída text?
- westrem
- Člen | 398
No jde mi o dědičnost, když mám class=„w60 text“ tak nejprve dědí od w60 a pak od text
Prepac, ale odkial mas taku blbost? Trosku studovania ako funguju kaskadove styly: http://www.smashingmagazine.com/…should-know/ a http://www.smashingmagazine.com/…inheritance/
Ak sa ti prepisuje nieco z vlastnosti w60 tak ju mas uvedenu v CSSku
- skorej ako .text triedu
- s mensou konecnou kaskadou ako .text a preto ju prepisuje
Pouzi FireBug a budes vidiet co odkial sa taha.
Mozes ukazat aj kod ako mas s tym nastavovanim tried? Mam za to, ze Nette\Html to ma pekne pretazene a malo by to fungovat ..
Editoval westrem (12. 9. 2010 23:10)
- MIKI
- Člen | 34
Zdravim,
pridam sa aj ja do diskusie, pretoze prave aj ja mam podobny problem :)
Potrebujem zrusit pre controls, aby mi pridavalo triedu „text“, lebo tu uz
pouzivam. Samozrejme, nebol by pre mna problem to zmenit, ale rad by som, ak by
formular zbytocne nevypisoval, co tam nepotrebujem ;)
$form = new AppForm;
$form->addText('name', 'Name:', 60, 100)
->addRule(Form::FILLED, 'Musite vyplnit text!')
->getControlPrototype()->setClass('Ftext');
Ak to vykresli, stale tam je class=„Ftext text“
BTW k CSS, westrem ma pravdu, poriade velmi nezalezi na dedicnosti :)
Ak chces, aby pri triede w60 si mal sirku, ktoru nechces prepisat, napis to
v css takto:
.w60
{
width: 60px !important;
}
Toto Ti zabezpeci aby element s triedou w60 mal sirku stale 60px :)
Editoval MIKI (13. 9. 2010 9:36)
- MIKI
- Člen | 34
Super, nasiel som, ako sa to robi :) [metodou Pokus-Omyl]
$form = new AppForm;
$renderer = $form->getRenderer();
$renderer->wrappers['control']['.text'] = 'Ftext';
$renderer->wrappers['control']['.password'] = 'Ftext';
Toto nastavi class pre input, typu „text“ alebo „password“ na hodnotu ‚Ftext‘ :)
Editoval MIKI (13. 9. 2010 9:59)
- westrem
- Člen | 398
MIKI napsal
Ano ak len chces zmenit default triedu vo vypisovani, tak sa to robi cez wrapper, to ale ak spravne chapem nie je problem kolegu.
napis to v css takto:
Ehm, to je sice pekne ale ani toto ti vzdy nezaruci ze ta
dlzka bude 60px
. Proste vsetko zalezi od kaskady a
od skore, ktore sa danemu pravidlu priradi.
- MIKI
- Člen | 34
westrem napsal(a):
MIKI napsal
Ano ak len chces zmenit default triedu vo vypisovani, tak sa to robi cez wrapper, to ale ak spravne chapem nie je problem kolegu.
Ak tam zada prazdny retazec, nebude mat ziadnu default triedu.
Ak ale chce len pre jeden element zmenit triedu, tak to netusim ako. Skusal som
rozne varianty setClass(‚test‘, TRUE) [ako som to videl v zdrojaku
k renderovaniu formularu], ale nic som nenasiel.
Bud je to bug, alebo je na to featura, ktora nikde nie je napisana :)
Pouzivam verziu Nette 0.9.5 (revision 5eb03f5 released on 2010–07–01)
- westrem
- Člen | 398
Vsak ale tu nie je o com diskutovat :). On chce aby sa mu korektne zobrazovala dlzka inputu. Classa sa pridava napr pomocou
$form['sklad']->getControlPrototype()->addClass('w60');
To moje prvotne uvedene setClass
funguje tiez, avsak
conventional renderer tie classy appenduje takze to nebude fungovat v tom
zmysle, ze to nastavi iba tu jednu triedu, ale tiez len ako pridanie.
masterr ma ocividne chybu v CSS nie v PHP.
- MIKI
- Člen | 34
Suhlasim, ze sa to da riesit zmenou CSS, ale spominal aj moznost, aby tam mal class=„w60“, teda bez toho „text“ ktore tam renderer pridava.
Osobni si myslim, ze ak je to funkcia setClass(‚nieco‘), tak by sa to
malo aj takto spravat, t.j. nastavit nie
pridat (na to je tam predsa addClass()).
Ohlasim to ako chybu, ak je to teda spravanie v rendereri. (Mal som pocit, ze
to nefunguje len mne, ale vidim, ze je to u viacerych)
BTW Aj tak diky, trochu som si pozrel tie wrappers ;)
- westrem
- Člen | 398
MIKI napsal
Ohlasim to ako chybu, ak je to teda spravanie v rendereri.
Ale aku chybu prosim ta? Vsak setClass
funguje uplne korektne,
ja som vravel, ze renderer (dufam, ze zo zjavnych dovodov) vyuziva
addClass
nie setClass
, kedze sa vykonava po vytvaranu
v tovarnicke a bolo by nepekne aby ti prepisoval tvoje nadefinovane triedy.