V tomto úkolu si na domovskou stránku administrace přidáme seznam zaslaných zpráv.
1. V souboru /admin/controller/HomeController.php přidáme do metody render nalezení zpráv z databáze pomocí MessageRepository. Založíme tedy novou instanci třídy MessageRepository a uložíme ji do proměnné $messageRepository. Nyní můžeme do proměnné $messages uložit všechny zprávy z databáze zavoláním metody findMessages nad $messageRepository. Metoda render by tedy měla vypadat takto:
public function render(): void
{
$messageRepository = new MessageRepository();
$messages = $messageRepository->findMessages();
require $this->layout;
}
2. Když se pokusíte stránku načíst, tak pravděpodobně uvidíte chybu. Ta se nachází v souboru Class/MessageRepository.php, zde je metoda findMessages. Je potřeba na prvním řádku změnit název tabulky ze zprava na message. Tedy z: $stmt = $this->pdo->prepare('SELECT * FROM zprava'); na $stmt = $this->pdo->prepare('SELECT * FROM message');
3. Nyní už nám stačí jen zprávy vypsat v šabloně: admin/page/home/default.php. Kód by mohl vypadat například takto:
<h1 class="h3 mb-4 text-gray-800"><?php echo $this->title; ?></h1>
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Zprávy</h6>
</div>
<div class="card-body">
<table class="table table-striped table-hover">
<tr>
<th>Jméno</th>
<th>Email</th>
<th>Zpráva</th>
</tr>
<?php foreach ($messages as $message) : ?>
<tr>
<td><?php echo $message->getName(); ?></td>
<td><?php echo $message->getEmail(); ?></td>
<td><?php echo $message->getText(); ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
4. ! Kód takto není bezpečný. V čem je nyní kód nebezpečný a jak to řešit si povíme v následující části kurzu.