Oznámení
Dibi + Nette – formát dat předávaných šabloně
před 10 lety
- EL
- Člen | 17
Zdravím, na nette foru mě odkázali sem, takže doufám, že tady najdu odpověď…
mám jistou komponentu, starající se o vykreslení nějakých 5 řádků z tabulky (není důležité, o co jde)
mám funkci, která se tedy stará o výpis
public function renderThisWeek()
{
...
$result = dibi::query("...");
$template = $this->createTemplate();
$template->rows = ???
$template->setFile(dirname(__FILE__) . '/week.phtml');
$template->render();
}
jak tedy přiřadit do proměnné rows výsledek dotazu (kterým je tabulka x * y), abych potom v šabloně mohlo volat
{foreach $rows as $row}
...
{/foreach}
předem díky
před 10 lety
- Ondřej Mirtes
- Člen | 1539
$result->fetchAll();
Odpovědi na tyto otázky se dají snadno dohledat v API nebo i v Quick Startu.
Editoval Ondřej Mirtes (25. 11. 2009 15:52)
před 10 lety
- EL
- Člen | 17
no to sem právě dohledal, ale nešlo mi to
Argument passed to SmartCachingIterator::__construct must be an array or interface Iterator provider, NULL given.
konkrétně na řádku právě s
{foreach $rows as $row}
Editoval EL (25. 11. 2009 15:55)
před 10 lety
- vrtak-cz
- Člen | 2249
$result->fetchAll();
EDIT zase pomalu… Pomalost Google Readeru me zacina stvat
EDIT2:
zkus před řádek:
$template->setFile(dirname(__FILE__) . '/week.phtml');
hodit
Nette\Debug::consoleDump($this->template->rows); //jestli tam máš vůbec nějáká data
Editoval vrtak-cz (25. 11. 2009 16:01)
před 10 lety
- EL
- Člen | 17
při
$template->rows = $result->fetchAll();
Debug::consoleDump($this->template->rows );
vrací null
Debug::consoleDump($template->rows );
vrací normálně výsledky, který potřebuju, ale pořád stejná chyba s iteratorem
Editoval EL (25. 11. 2009 16:22)
před 10 lety
- Tomik
- Nette Evangelist | 489
Zkus
$this->template->rows = $result->fetchAll();
…
Zpět, nevšiml jsem si ze zadání, že se jedná o komponentu.
Editoval Tomik (25. 11. 2009 16:45)
před 10 lety
- EL
- Člen | 17
taky bohužel nic :/
před 10 lety
- EL
- Člen | 17
nikdo žádný další nápady? :/
před 10 lety
- Ondřej Mirtes
- Člen | 1539
Musí to normálně fungovat, ukaž aktuální kód render metody a související šablony.
před 10 lety
- EL
- Člen | 17
week.phtml
<div class="{$week} fleft">
{foreach $rows as $row}
...//cokoliv, hnije to na foreach
{/foreach}
</div>
render metoda
public function renderThisWeek()
{
//nepodstatny operace vynechany
$q = " platny sql dotaz, ktery vraci tabulku x * y ";
$result = dibi::query($q);
$template = $this->createTemplate();
$template->week = "this_week";
$template->rows = $result->fetchAll();
$template->setFile(dirname(__FILE__) . '/week.phtml');
$template->render();
}
Editoval EL (26. 11. 2009 0:53)
před 10 lety
- David Grudl
- Nette Core | 6806
Nejlépe hodit {dump} před {foreach …} a zjistit, co se skutečně v šabloně nachází.
před 10 lety
- EL
- Člen | 17
tak nakonec sem blbej já ;)
já tu šablonu používal na jedný stránce 2×, ale zapomněl sem v tom druhym renderu něco přiřadit do rows.
ale každopádně díky za veškerou pomoc