Zavolání context v latte šabloně

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

Ahoj, používám v presenteru zavolání databáze přes context:

$this->template->gallery = $this->context->createGallery()

Můžu nějak zavolat createGallery() přímo v latte šabloně?

Tomáš Votruba
Moderator | 1114
+
0
-

Ahoj, takto se to obvykle nedělá.

A. Můžeš použít komponentu (ne k db):

V presenteru:

protected function createComponentGallery()
{
	return $this->context->createGallery();
}

V šabloně:

{control gallery}

B. Data z db by měla být zpracována v presenteru, pokuž tedy nepoužíváš NDB\Notorm pro přímý výpis v šabloně – viz dokumentace.

C. Řekni, co potřebuješ. Možná to jde jinak/lépe.

Editoval Schmutzka (10. 6. 2012 19:39)

breeta
Člen | 68
+
0
-

Mám právě tenhle zápis jenže musím zavolat znovu databázi jinak se podmínka násobí …
$gallery->where(‚id_parent‘, $a[‚id‘])->limit(4)

{foreach $action as $a}
 <h2 class="clear" > <a n:href="Action:detail $template->webalize($a['action_name'])">{$a['action_name']} - {$a['action_date']|date:'%d.%m.%Y'}</a></h2>
<p>{$a['action_text']|stripTags|truncate: 250}
<a n:href="Action:detail $template->webalize($a['action_name'])">více</a> </p>
{foreach $gallery->where('id_parent', $a['id'])->limit(4) as $img }
<div class="gallery" >
<a href="{$basePath}/gallery/{$img['img_file']}.jpg" title="{$img['img_name']}" rel="gallery_img" >
<img class="gallery_img" src="{$basePath}/gallery/{$img['img_file']}_t.jpg" /></a>  </div>
{/foreach}
{/foreach}
vvoody
Člen | 910
+
0
-

Tie akcie ($action) to je pole alebo objekt Nette\Database\Tables\Selection?

breeta
Člen | 68
+
0
-

Selection …

class Action extends Selection
{
	public function __construct(\Nette\Database\Connection $connection)
	{
		parent::__construct('action', $connection);
	}
}
bojovyletoun
Člen | 667
+
0
-

Pokud je počet dotazů úměrný délce cyklu, pak je to špatně. vlastnost Nette Database a NotOrm je právě konst počet dotazů. Neznám strukturu, ale tipuji, že chceš zapsat něco jako v řeči Database: {foreach $action->related('gallery', 'id_parent')->limit(4) as $img }

zapomněl jsem dodat dokazy:

Editoval bojovyletoun (10. 6. 2012 20:39)

vvoody
Člen | 910
+
0
-

Dovolim si doopravit ;)

{foreach $a->related('gallery', 'id_parent')->limit(4) as $img}
breeta
Člen | 68
+
0
-

vvoody
Díky za pomoc!