Volání funkce s parametrem nebo statické metody ze šablony

lukasj
Člen | 4
+
0
-

Ahoj.
Mám následující problém.
Z databáze vypisuji do stránky seznam nabídek bazaru.
Každá položka má v db přiřazené své obrázky.
Když si předám do šablony polozky z databáze, tak je pomocí foreach v šabloně vykreslím.
Teď k věci a problému.
Mám přístup k $polozka->id a to potřebuji poslat do nějaké buď funkce, nebo statické metody, která mi vrátí pole s id obrázků, které dané položce náleží.
Nemám ale představu, kde tu funkci definovat a odkud pak volat.
Díky za rady.

Kamil Valenta
Člen | 822
+
0
-

Tohle má dodat už modelová třída. Jaký je důvod snažit se na to sahat až ze šablony?

Na hraně by asi bylo řešit to v šabloně filtrem… Ale uniká mi smysl, proč to vůbec chtít.

lukasj
Člen | 4
+
0
-

Kamil Valenta napsal(a):

Tohle má dodat už modelová třída. Jaký je důvod snažit se na to sahat až ze šablony?

Na hraně by asi bylo řešit to v šabloně filtrem… Ale uniká mi smysl, proč to vůbec chtít.

Protože já chci pracovat už přímo s tou konkrétní položkou. Už mám atribut $polozka->id v šabloně a to chci předat.
V šabloně mám výsledek z $this->db->table(‚polozky‘), který se do šablony vrací v render metodě. Jednotlivé položky mám až po projetí výsledku foreach cyklem.
Kdybych to měl na stránce, která bude vypisovat jen jednu konkrétní položku třeba podle parametru z routeru (id), tak to udělám přímo v presenteru.

David Matějka
Moderator | 6445
+
0
-

Ahoj, ty seznamy obrázků jsou taky uloženy v databázi nebo třeba jen na disku?

lukasj
Člen | 4
+
0
-

David Matějka napsal(a):

Ahoj, ty seznamy obrázků jsou taky uloženy v databázi nebo třeba jen na disku?

Ahoj. Obrázky jsou také v databázi, ale v jiné tabulce. Vím že to bylo šlo udělat jedním sql dotazem pomocí JOIN, když posílám do šablony z presenteru výsledek dotazu, ale já to chci udělat zvlášť.

David Matějka
Moderator | 6445
+
0
-

jestli používáš Nette Database Explorer, tak využij v šabloně related metodu, v tvém případě to bude něco jako $polozka->related('images'), resp dle názvu tabulky.

lukasj
Člen | 4
+
0
-

David Matějka napsal(a):

jestli používáš Nette Database Explorer, tak využij v šabloně related metodu, v tvém případě to bude něco jako $polozka->related('images'), resp dle názvu tabulky.

Díky. Vyzkouším.
A kdybych to chtěl udělat tak, že bych měl přímo nějakou statickou metodu, která by dostávala id položky ze šablony a vracela mi zpět nějaké data?

Když to vezmu v klasickém php bez frameworku, tak mám php(php+html) stránku kde vypisuji položky.

<h1>Položky z db:</h1>
<?php
$polozky = new Polozka();
$polozky = $polozky->getAll();

foreach($polozky as $polozka)
{
?>
<h2><?php echo $polozka->nazev ?></h2>
<p><?php echo $polozka->popis ?></p>
<?php
	/* tady už mám vrácené id hlavního obrázku který bude jako náhled */
	$image_id = Polozka::getImage($polozka->id);
}
?>
<img src="./vykreslitObrazek.php?id=<?php echo $image_id ?>">

přičemž getImage je statická metody třídy Polozka.