Projekt - část 15

Projekt - část 15

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.