Spocitavanie prvkov Table\Selection v cyklu v sablone
- rixi
- Člen | 109
Ahoj,
aktualizoval som verziu Nette Framework 2.0-beta d5b50dc released on
2011–06–03 na 1aae612 released on 2011–06–27 a
neviem co sa v Nette/Database zmenilo, ale nasledovny zapis v sablonu uz
nespocitava polia spravne.
Ide o to, ze v cyklu count($cat->related('articles'))
v
<a n:if> vracia/spocitava pole bez problemov, ale v druhom pouziti toho
isteho prikazu v cyklu uz ‚count($cat->related('articles‘))' vracia nulu
(<a>0</a>). Neviete v com to kotvi? Vhodnejsie riesenie ma
nenapada.
<tr n:foreach="$categories as $cat" n:class="$iterator->odd ? odd, $iterator->even ? even">
<td>
<a title="{$cat->name}" n:href=":admin:kategorie:upravit, $cat->id">{$cat->name}</a></td>
<td>
<a n:if="count($cat->related('articles')) > 0" n:href=":admin:kategorie:zobraz, $cat->id">
{count($cat->related('articles'))}</a>
</td>
</tr>
Editoval rixi (28. 6. 2011 19:24)
- bojovyletoun
- Člen | 667
Nevím, chyba bude někde v předbíhání budoucnosti. Zkus si uložit
výsledek takto {var $sum => count(...)}
a pak použít
n:if="$sum"
a {$sum}
- David Grudl
- Nette Core | 8227
Těch commitů do Nette\Database tam není moc, myslíš že bys mohl zjistit, který to pokazil?
- _Martin_
- Generous Backer | 679
Narazil jsem na problém, pravděpodobně se stejnou příčinou. Taky jsem potřeboval projít vnořenou relaci dvakrát během jednoho nadřazeného cyklu:
foreach ($order->related('order_item') as $item) {
echo '<h1>ITEM</h1>';
if ($item->type == 'product') {
echo '<h2>Prvni</h2>';
foreach ($item->related('product') as $product) {
NDebugger::dump($product === NULL);
}
echo '<h2>Druhy</h2>';
foreach ($item->related('product') as $product) {
NDebugger::dump($product === NULL);
}
}
}
Očekávaný výstup (na konkrétních datech) | Skutečný výstup |
---|---|
ITEM | ITEM |
Prvni | Prvni |
FALSE | FALSE |
Druhy | Druhy |
FALSE | FALSE |
ITEM | ITEM |
Prvni | Prvni |
FALSE | FALSE |
FALSE | FALSE |
FALSE | FALSE |
Druhy | Druhy |
FALSE | |
FALSE | |
FALSE | |
ITEM | ITEM |
Prvni | Prvni |
FALSE | FALSE |
Druhy | Druhy |
FALSE |