Volání funkce s parametrem nebo statické metody ze šablony
- lukasj
- Člen | 4
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
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
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
Ahoj, ty seznamy obrázků jsou taky uloženy v databázi nebo třeba jen na disku?
- lukasj
- Člen | 4
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
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
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.