Vazby mezi tabulkami v šabloně
- andros
- Člen | 145
Procházím si dokumentaci k Nette a snažím se nastudovat vazby mezi tabulkami. Tenhle příklad z dokumentace (https://doc.nette.org/…ase/explorer) ukazuje jak vypsat všechny tagy u knížek.
$books = $context->table('book');
foreach ($books as $book) {
echo 'title: ' . $book->title;
echo 'written by: ' . $book->author->name;
echo 'tags: ';
foreach ($book->related('book_tag') as $bookTag) {
echo $bookTag->tag->name . ', ';
}
}
Jak dostat stejný výsledek v šabloně ? Uvedený příklad je vypisování dat přímo z presenteru. Mě napadá jen to, že v presenteru ve foreach, vše uložím do dvourozměrného pole, které pak pošlu do šablony
$books = $context->table('book');
foreach ($books as $book) {
foreach ($book->related('book_tag') as $bookTag) {
$tags[] = $bookTag->tag->name;
}
$books[] = ['title' => $book->title,
'author' => $book->author->name,
'tags' => $tags
];
}
$this->template->books = $books;
Existuje nějaký lepší způsob, než tento ? Něco víc „Nette“ :)
Díky za informace.
- GEpic
- Člen | 566
andros napsal(a):
Ááá děkuji :) Nevěděl jsem, že ->related(‚tabulka‘) jde použít i uvnitř šablony, myslel jsem, že se používá pouze v presenteru.
Pracuješ s objektem ActiveRow ($book) a tak je jedno, kde se nachází. Nemá to s presenterem ani šablonou nic společného. :)
Editoval GEpic (20. 1. 2017 23:20)