Skip to content

Příklady použití Message

Tato sekce ukazuje běžné scénáře práce se flash zprávami v aplikaci.


Základní použití

Přidání zprávy a vypsání v PHP

Nejjednodušší případ – přidat zprávu a vypsat ji v PHP:

use Petrovo\Message\Message;

// Přidej zprávu
Message::success('Operace byla úspěšná!');

// Vypiš a smaž zprávu
Message::print();

Praktický příklad z administrace

// app/Controllers/ADMIN/MenusController.php
use Petrovo\Message\Message;
use DB;

public function store() {
    $name = $_POST['name'] ?? '';

    if (empty($name)) {
        Message::error('Název je povinný!');
        Message::print();
        return;
    }

    DB::query("INSERT INTO menus (name) VALUES (?)", [$name]);

    Message::success('Menu bylo vytvořeno!');
    Message::print();
}

Info a success zprávy

Rozlišení podle typu

use Petrovo\Message\Message;

// Info zpráva – informuje o něčem (s CSS třídou `info_message`)
Message::info('Stránka byla aktualizována.');

// Success zpráva – potvrzuje úspěch (s CSS třídou `message`)
Message::success('Změny byly uloženy!');

// Error zpráva – hlásí chybu
Message::error('Nepodařilo se načíst data.');

CSS styling

/* Info zpráva */
.message.info_message {
    background-color: #d1ecf1;
    border-color: #bee5eb;
    color: #0c5460;
}

/* Success zpráva */
.message {
    background-color: #d4edda;
    border-color: #c3e6cb;
    color: #155724;
}

/* Error zpráva */
.error_message {
    background-color: #f8d7da;
    border-color: #f5c6cb;
    color: #721c24;
}

Bezpečnost – XSS ochrana

Pozor na HTML ve zprávách

Zprávy NEJSOU automaticky escapovány. Pokud přidáš uživatelský vstup, musíš jej escapovat:

use Petrovo\Message\Message;

// NEBEZPEČNÉ
$userInput = $_POST['name'];
Message::success('Vítej, ' . $userInput . '!');
// Útočník by mohl vložit: <script>alert('XSS')</script>

// BEZPEČNÉ
$userInput = $_POST['name'];
Message::success('Vítej, ' . htmlspecialchars($userInput) . '!');

// Nebo používej čistý text
Message::success('Vítej, ' . strip_tags($userInput) . '!');

HTML ve zprávách (záměrně)

Pokud chceš v zprávě HTML (odkaz, strong text), musíš jej sám vytvořit:

use Petrovo\Message\Message;

// Správně s HTML
Message::success('Profil byl aktualizován. <a href="/profile">Jít na profil</a>');

// Jen pokud wíš, že je obsah bezpečný
$template = 'Děkuji <strong>%s</strong>!';
$name = htmlspecialchars($_POST['name']);
Message::info(sprintf($template, $name));

Formát zpráv v session

Jak vypadá session data

$_SESSION = [
    'user_id' => 42,
    'message' => '<div class="message info_message">Profil aktualizován</div>' .
                 '<div class="message">Úspěšné uložení!</div>',
    'error_message' => '<div class="error_message">Staré heslo je chybné</div>'
];

Po zavolání Message::print()

// Vrátí:
'<div class="error_message">Staré heslo je chybné</div>' .
'<div class="message info_message">Profil aktualizován</div>' .
'<div class="message">Úspěšné uložení!</div>'

// A session zůstane:
$_SESSION = [
    'user_id' => 42
    // message a error_message jsou smazány
];