Chyba při vypsání dat z databáze – foreach
- Sharmlock
- Člen | 8
Zdravím,
snažím se vypsat data z databáze a nějak mi to prostě nejde.
Funguje mi to na HomepagePresenter.php:
<?php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
final class HomepagePresenter extends Nette\Application\UI\Presenter
{
private Nette\Database\Explorer $database;
public function __construct(Nette\Database\Explorer $database)
{
$this->database = $database;
}
public function renderDefault(): void
{
$this->template->users = $this->database
->table('users')
->order('id');
}
}
a takhle to vypisuju v default.latte:
{block content}
<h1 n:block="title">Můj blog</h1>
{foreach $users as $post}
<div class="post">
<h2>{$post->name}</h2>
</div>
{/foreach}
{/block}
Takhle mi to normálně funguje, ale když zkusím vypsat data z SchuzkyPresenter.php:
<?php
namespace App\Presenters;
use Nette;
use Nette\Application\UI\Form;
final class SchuzkyPresenter extends Nette\Application\UI\Presenter
{
private Nette\Database\Explorer $database;
public function __construct(Nette\Database\Explorer $database)
{
$this->database = $database;
}
public function renderDefault(): void
{
$this->template->users = $this->database
->table('users')
->order('name');
}
}
a takhel vypada muj prehled.latte:
{block content}
<h1 n:block="title">Můj blog</h1>
{foreach $users as $post}
<div class="post">
<h2>{$post->name}</h2>
</div>
{/foreach}
{/block}
a vyhodí mi to přes TRACY tento error:
https://gyazo.com/…e8fa47e73db2
Už se s tím peru dlouho, nevíte co mám špatně? Tipuju, že mám nějak špatně cestu.. Předem díky..
- nightfish
- Člen | 519
Problém je v tom, že proměnnou do šablony nastavuješ v
renderDefault()
, což je metoda, která se volá při vykreslení
šablony ze souboru default.latte
. Ty vykresluješ
prehled.latte
, tzn. potřebuješ zapsání do users
provést v renderPrehled()
.
Jak to celé funguje je pěkně popsané v dokumentaci