Easily output a simple flash message/notice to the page, but only once.
It's recommended you install this package via Composer.
composer require sebkay/noticeableThe notice is session based and will be removed on the next page refresh.
First you'll need to start a session. Put this at the very start of your project files (so it's the first thing that loads):
session_start();Then include the Composer autoloader so you have access to the package.
require __DIR__ . '/vendor/autoload.php';You can set a notice using the ::set static method. You need to pass the message and the type.
They can both be anything you want. error and success are good standards to follow for type.
Noticeable\Notice::set([
'message' => 'Please enter an email address.',
'type' => 'error'
]);When you get a notice it will return an array, like so:
$notice = Noticeable\Notice::get();
var_dump($notice);
// Will return
array(2) {
["message"]=>
string(12) "Please enter an email address."
["type"]=>
string(5) "error"
}Once you have the array you can do whatever you want with it, like load a PHP file with some HTML to format the message.
I'm a big fan of Twig, so I would do something like this:
echo $twig->render('notice.twig', Noticeable\Notice::get());Then I'll have the corresponding notice.twig file laid out like so:
{% if message %}
{% if type == 'success' %}
{% set css_class = 'notice--success' %}
{% elseif type == 'error' %}
{% set css_class = 'notice--error' %}
{% endif %}
<div class="notice {{ css_class }}">
<p class="notice__title">
{{ message | raw }}
</p>
</div>
{% endif %}