Vazby mezi tabulkami v šabloně

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

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.

Oli
Člen | 1215
+
0
-

Jistě:

{foreach $books as $book}
	<h1>Title: {$book->title}</h1>
	<h4>Written by: {$book->author->name}</h4>

	{foreach $book->related('book_tag') as $bookTag}
		{$bookTag->tag->name}{sep}, {/sep}
	{/foreach}
{/foreach}
andros
Člen | 145
+
0
-

Ááá děkuji :) Nevěděl jsem, že ->related(‚tabulka‘) jde použít i uvnitř šablony, myslel jsem, že se používá pouze v presenteru.

GEpic
Člen | 566
+
0
-

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)

andros
Člen | 145
+
0
-

Díky, zase jsem o něco chytřejší.