Nette\Web\Html request & ConventionalRenderer request
- Ola
- Člen | 385
Zdravím, docela by se mi hodila jakási funkce container pro Nette\Web\Html elementy, mohl bych tedy ve formulářích napsat
$wrappers["error"]["container"] = Html::el('div')->class('message error')->container('ul');
S tím, že by kód vypadal nějak takto:
<div class="message error">
<ul>
<li>Some error..</li>
</ul>
</div>
(prostě by se vytvořil jakýsi podobal..)
.. A ještě bych měl dvě prosbičky k poli $wrappers u CR, přidat k labelu něco jako suffix, ale s tím rozdílem, že by se suffix přidal před </label>, a druhou, přidat suffix k controlu nebo pairu (občas potřebuju přidat odřádkování <br />)
- romansklenar
- Člen | 655
Ola napsal(a):
Zdravím, docela by se mi hodila jakási funkce container pro Nette\Web\Html elementy, mohl bych tedy ve formulářích napsat
$wrappers["error"]["container"] = Html::el('div')->class('message error')->container('ul');
S tím, že by kód vypadal nějak takto:
<div class="message error"> <ul> <li>Some error..</li> </ul> </div>
(prostě by se vytvořil jakýsi podobal..)
Co toto?
Html::el('div')->class('message error')->add(Html::el('ul'));
.. A ještě bych měl dvě prosbičky k poli $wrappers u CR, přidat k labelu něco jako suffix, ale s tím rozdílem, že by se suffix přidal před </label>, a druhou, přidat suffix k controlu nebo pairu (občas potřebuju přidat odřádkování <br />)
S tím labelem pokud jde jen o toto
popisek:
[ input ]
tak to jde jednoduše nastylovat přes css.
Odřádkování pairu už se řešilo
jinde jednoduchou úpravou ConventionalRendereru
a myslím, že
se to dostalo i do Davidova veřejného todo tady na fóru, takže dočkej
času ;)
- Ola
- Člen | 385
Ad. container: Nene, tohle vytvoří kód v tomto stylu:
<div class="message error">
<ul></ul>
<li>Some error here</li>
</div>
Ad. label: Ten label nastylovat jak? Myslíš přes :after? Já to myslel
tak, že bych si do nějakýho [předsuffixu]
dal dvojtečku,
protože potřebuju mít jinou barvu textu mimo label a jinou v labelu..
Ad. pair: Aha, nebyl moc jistý jestli to tu je a radši sem to taky napsal
(musel sem to rychle dopsat)..
Editoval Ola (11. 4. 2009 16:51)
- romansklenar
- Člen | 655
Aha, tak pak asi momentálně jedině zase úpravou vykreslovače nebo manuálním vykreslením v šabloně:
{$form->render('begin')}
<div class="message error">
{$form->render('errors')}
</div>
{$form->render('body')}
{$form->render('end')}
S tím labelem jsem tě asi špatně pochopil, myslel jsem, že jde jen o to, že chceš popisek a input pod sebou, ne vedle sebe, když jsi tam zmiňoval odřádkování.
span.pair input {
display: block;
}
Celý ConventionalRendereru
je šikovně napsaný a dají se
s ním dělat psí kusy, takže tyhle věci si dopisuju, jen je pak třeba
nezapomenout při vytváření formulářů ho formuláři i přiřadit
$form->setRenderer(new CustomRenderer);