Egoblog.cz - Petr Kobelka

Nette, Kdyby replicator a počet kontejnerů

Narazil jsem na problém s vykreslením hlášky o stavu, že žádný kontejner v Replicatoru není k dispozici. Více informací a řešení najdete v tomto postu.


PHP | Komentáře (0) | Shlédnuto 1410 × | Vloženo: 10. května 2015

Nette je výborný nástroj pro rychlou tvorbu kvalitních webových aplikací. Navíc je kolem něj poměrně aktivní komunita, která vyvýjí spoustu doplňků. Jedním z nich je Kdyby\Replicator.

Dnes jsem narazil na problém, že v Kdyby replikátoru potřebuji v případě, kdy výchozí počet prvků roven 0, tak v takovém případě chci vypsat hlášku, že žádné položky nejsou k dispozici. Aby to bylo ještě lepší a zajímavější, řeším tuto věc na úrovni latte šablony.

Výchozí kód vypadal asi takto:

<table class="table table-bordered table-hover">
<thead>
  <tr>
    <th>HLAVICKA</th>
  </tr>
</thead>
<tbody>
  {foreach $form['data']->containers as $id => $radek}
  <tr>
    <td class="text-center"><b>INDEX {$iterator->getCounter()}</b></td>
    <td>
    {input data-$id-id}
    DATA<br />
    </td>
  </tr>
  {/foreach}
</tbody>
</table>

Chvíli jsem bloudil a zkoušel různé nápady. Hleda jsem na fórech a v dokumentaci Kdyby, ale nikde nic nebylo. Nakonce jsem zkusil variantu $form['data']->getContainers()->count() a ejhle. Už mám takový výsledek, jaký potřebuji. Sice v případě, že máte 0 kontejnerů vrací 1 a když máte 2 kontejnery, vrací to hodnotu 3, ale s tím se už dá žít.

Výsledný upravený kód v latte šabloně pak vypadá následovně:

<table class="table table-bordered table-hover">
<thead>
  <tr>
    <th>HLAVICKA</th>
  </tr>
</thead>
<tbody>
  {if $form['data']->getContainers()->count() > 1}
  {foreach $form['data']->containers as $id => $radek}
  <tr>
    <td class="text-center"><b>INDEX {$iterator->getCounter()}</b></td>
    <td>
    {input data-$id-id}
    DATA<br />
    </td>
  </tr>
  {/foreach}
  {else}
    <tr>
    <td>Žádná data k dispozici.</td>
    </tr>
  {/if}
</tbody>
</table>

Celkem jednoduché a hezké řešení. Jen by mě zajímalo, jestli metoda count() je nativní v Nette formulářích? Kdo to ví, ať odpoví. Díky za komentáře ;-)

Podobné články jako "Nette, Kdyby replicator a počet kontejnerů"

Petr Kobelka | Egoblog.cz | Tvorba www stránek - www.petrkobelka.cz

Petr Kobelka
Autor je zkušeným web developerem a programátorem s více než 10 letými zkušenostmi. Pracuje jako programátor pro známou Olomouckou společnost zabývající se tvorbou internetových a intranetových řešení. Spolu se zaměstnáním pracuje na volné noze a zabývá se tvorbou internetových stránek. Ve volném čase rád fotí, jezdí na kole, plave a cestuje.

Komentáře

E-mail je potřeba pouze pro vygenerování Gravataru!

Oups, žádné komentáře? Buďtě první !!!

Blog píše Petr Kobelka

Petr Kobelka - egoblog.cz

Žádám všechny, kteří mají zájem vkládat komentáře, aby se řídili pravidly NETikety. Komentáře, porušující tato pravidla můžou být bez varování smazány.