tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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