Volání funkce přímo ze šablony
- mrfrostikcz
- Člen | 17
Ahoj,
rád bych vás požádal o radu. Mám výpis např. článků, které přes foreach vypisuji v šabloně. Potřeboval bych ale, abych si u každého článku vypsal i např. do jaké kategorie patří. Sloupec kategorie je pouze id, tudíž bych ho potřeboval vzít a zeptat se funkce ať mi vrátí název kategorie podle id. Jenže bohužel netuším, jak zavolat funkci, kterou mám v modelu přímo ze šablony.
Takže bych potřeboval podle ID, které získávám v šabloně dostat do funkce modelu, který řeší články/kategorie a vrátí mi zpět co chci.
Předem děkuji za rady.
- qteck
- Člen | 164
mrfrostikcz napsal(a):
Ahoj,
rád bych vás požádal o radu. Mám výpis např. článků, které přes foreach vypisuji v šabloně. Potřeboval bych ale, abych si u každého článku vypsal i např. do jaké kategorie patří. Sloupec kategorie je pouze id, tudíž bych ho potřeboval vzít a zeptat se funkce ať mi vrátí název kategorie podle id. Jenže bohužel netuším, jak zavolat funkci, kterou mám v modelu přímo ze šablony.
Takže bych potřeboval podle ID, které získávám v šabloně dostat do funkce modelu, který řeší články/kategorie a vrátí mi zpět co chci.
Předem děkuji za rady.
logiku by si měl mít vřešenou už v modelu a do šablony tlačit už jenom ryzí data. Já bych to asi všechno naházel do polí a pak to jenom vyházel v té šabloně. nevýhodou je, že tam budeš mít pár cyklů navíc, ale zase lepší než tahat z view do modelu.
- Oli
- Člen | 1215
Tak mám taky asi 2 případy, kdy v šabloně šahám do modelu, ale tohle by neměl být tvůj případ. Pokud máš nějakou tabulku např articles a categories a jsou spojeny přes cizí klíč (napr category_id), tak je to jednoduchy.
Tam se potom dostaneš přímo z té article. Pak by to vypadalo nějak takto:
{foreach $articles as $article}
{$article->category->name}
{$article->category_id} == {$article->category->id}
{/foreach}
Tohle je všechno i v dokumentaci, kdo s kým a proč…
- mrfrostikcz
- Člen | 17
Super, děkuji za rady. Zkusím se ještě podívat přímo na model, abych si vracel veškerá data rovnou a nemusel jsem se pak ještě ptát na zbylá.
Díky.