změna třídy pokud je checkbox zaškrtnutý

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

Ahoj všichni, jak se tak prokousávám Nette, našel jsem další problém… Tentokrát u checkboxlistu. Do šablony si vracím formulář, který má kus kodu:

$form->addCheckboxList('dny', '', $this->cas->seznamDnu())->setAttribute('class', 'checkbox-hidden');
$form->setDefaults(array('dny'=>array('2016-10-30','2016-11-05')));

A pak jej vypisuji v šabloně:

<div class="text-center alert alert-danger">
	{input dny:$den}
	{$den|date:'%A %d.%m.%Y'}
</div>

Jak ale udělám, když místo třídy alert-danger chci použít alert-success jen v případě, že je daný checkbox zaškrtnutý? Ať hledám, jak hledám, řešení jsem zatím nenašel :/

Altimit
Člen | 82
+
0
-

zkus to udělat přes ajax – snippet a redraw
si dáš do formuláře podmínku, kde si napíšeš ať ti to přepíše na to a to..

Webster.K
Člen | 212
+
0
-

Radši bych našel nějaké řešení jak to rovnou vykreslit :) než jít metodou to pak až u klienta překreslovat :)

CZechBoY
Člen | 3608
+
+2
-

Buď si předáš defaultní hodnoty do šablony nebo si vezmeš hodnotu z prvku nějak takhle

{$form['dny'][$den]->getValue()}
Webster.K
Člen | 212
+
0
-

Dokážu tímto udělat i když je prvek zaškrtnutý? Řešení které mi funguje je, že jsem si udělal funkci, kterou volám v obou částech, jednou jako $this->template->hodnota = funkce() a podruhý když vytvářím formulář a v latte (protože to stejně ty prvky co potřebuji vypisuji polem) podmínku, ve které mám že když se hodnota toho cyklu rovná hodnotě předaný hodnoty, tak jí vypíšu, jinak ne a když se vypíše, zvýším index o 1, takže vím kdy vypsat příště (předávaný hodnoty jsou v poli). Je to krkolomný, ale funguje to :) v latte to vypadá takto:

{form volneDnyForm}
        {foreach $seznamDnu as $den}
            {if $iterator->first}
                {var $cyklus = 0}
            {/if}
            <div class="col-lg-2">
                {if $den==$volneDny[$cyklus]}
                    <div class="text-center alert alert-success">
                        {input dny:$den}
                        {$den|date:'%A %d.%m.%Y'}
                    </div>
                    {var $cyklus = $cyklus + 1}
                {else}
                    <div class="text-center alert alert-danger">
                        {input dny:$den}
                        {$den|date:'%A %d.%m.%Y'}
                    </div>
                {/if}

            </div>
        {/foreach}
        <div class="col-lg-12">
            {input save}
        </div>
    {/form}

Kdyby měl někdo nějaký lepší nápad, sem s ním :) zatim jsem na nic lepšího nepřišel :/

blaztar
Člen | 93
+
+1
-

Co něco takového.

{form volneDnyForm}
   {var $checked = $form['dny']->getValue()}
   <div class="col-lg-2" n:foreach="$seznamDnu as $den">
       <div n:class="'text-center alert', in_array($key, $checked) ? 'alert-success' : 'alert-danger'">
           {input dny:$den}
           {$den|date:'%A %d.%m.%Y'}
       </div>
   </div>
   <div class="col-lg-12">
       {input save}
   </div>
{/form}

Editoval blaztar (28. 10. 2016 18:25)

Webster.K
Člen | 212
+
0
-

Problém toho cyklu co se v tom zvetsuje o jedna jen kdyz projde podminka je ten, ze ma jinej pocet opakovani nez ten co ho obaluje :/ a potrebuju zvyraznit jen prave ty data, ktere se schoduji. Nicméně je to rozhodně dobré, n:foreach v tom divu mě nenapadlo použít :)