Nastavení různých css stylů pro addError – <li>, <li class=muj-styl>
- JJ
- Člen | 5
Dobry den,
moje otazka se tyka vypisovani chyb u formulare.
(z Nette pouzivam jen formulare)
Pouzivam <? $form->render('errors') ?>
a toto generuje nasledujici html kod:
<ul class="error">
<li>chyba 1</li>
<li>chyba 2</li>
</ul>
Potreboval bych nektere vypisovane chyby/prvky <li> individualne
ostylovat jinak nez je vychozi HTML a toto pokud mozno pres/v souvislosti
s addError.
Vysledny HTML kod by pak mel vypadat takto:
<ul class="error">
<li>chyba 1</li>
<li class="muj-styl">chyba 2</li>
</ul>
Je mozne vyse uvedeneho vystupu HTML kodu dostahnout pres addError?
$form->addError('chyba 1'); // standardni render s vystupem <li>
$form->addError('chyba 2'); // k teto chybe pridam styl, HTML vystup bude <li class="muj-styl">
Dekuji
- Vojtěch Dobeš
- Gold Partner | 1316
use Nette\Utils\Html;
$form->addError(Html::el('')->setText('chyba 2')->setClass('muj-styl'));
- JJ
- Člen | 5
Super! Diky za nakopnuti. Vyzkousel jsem a..
Tento zapis styl neprida – class se v kodu neprojevi
$form->addError(Html::el('')->setText('forum napoveda')->setClass('muj-styl'));
Pokud doplnim HTML prvek Html::el(‚li‘): do jiz existujiciho vychziho HTML prvku je vsunut dalsi
$form->addError(Html::el('li')->setText('forum napoveda')->setClass('muj-styl-1'));
$form->addError(Html::el('li')->setText('chyba 1')->setClass('muj-styl-2'));
$form->addError(Html::el('li class=muj-styl-3')->setText('chyba 2'));
Je vypsan HTML kod:
<li>
<li class="muj-styl-1">forum napoveda</li>
</li>
<li>
<li class="muj-styl-2">chyba 1</li>
</li>
<li>
<li class="muj-styl-3">chyba 2</li>
</li>
V pripade, ze pouziju tento kod:
$form->renderer->wrappers['error']['item'] = "li class=styl-pro-vsechny";
Zmeni se podle ocekavani vychozi render a vsechny <li> dostanou class:
<li class="styl-pro-vsechny">chyba 1</li>
<li class="styl-pro-vsechny">chyba 2</li>
Zda se, ze budu potrebovat do cile „dokopnout“. Jak pristoupit = dosahnout generovani nasled. HTML kodu pres addError ?
<li>chyba 1</li>
<li class="muj-styl">chyba 2</li>
Diky.
Editoval JJ (21. 3. 2013 17:59)
- ic
- Člen | 430
Pokud nedošlo v nejnovějších verzích zase k nějaké změně, tak
style
se píše druhým parametrem u flash zprávičky
$this->flashMessage('Nepovedlo se cosik.','error');
vypadne něco jako
<li class="flash error">Nepovedlo se cosik.</li>
a není problém těch class
poslat více.
Tvůj problém bude IMHO ale na straně presenteru, kde se to má v .latte
vypsat.
to by mělo vypadat asi nějak takto:
{snippet flashes ul}
<li n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</li>
{/snippet}
// snippet je tam, aby se daly ‚přihazovat‘ i ajaxem
Editoval ic (21. 3. 2013 19:54)
- David Matějka
- Moderator | 6445
jedine me napada podedit renderer a upravit si tu metodu renderErrors
aby akceptoval
Html::el('')->setText('forum napoveda')->setClass('muj-styl')
napada me neco takovyhleho: (je to ten kus uvnitr foreache)
if ($error instanceof Html) {
$item->add($error);
if(!$error->getName()) {
$item->addAttributes($error->attrs);
}
}
- JJ
- Člen | 5
Vyborne! Je to presne ono.
Ted staci chybu zapsat a ostylovat:
$form->addError(Html::el()->setHtml('<strong>chyba</strong> s html tagy')->setClass('warning'));
a html vystup je:
..
<li class="warning">
<span>chyba</span>s html tagy
</li>
..
Diky vsem a zejm. vojtech.dobes, matej21.