sebkay/noticeable

2.2.0 2020-12-01 12:54 UTC

This package is auto-updated.

Last update: 2024-09-10 23:44:52 UTC


README

Test PHP

Noticeable

轻松地将简单的闪存消息/通知输出到页面,但仅显示一次。

如何安装

建议您通过 Composer 安装此包。

composer require sebkay/noticeable

通知基于会话,将在下一次页面刷新时被删除。

首先您需要启动一个会话。将此代码放在项目文件的最开始(这样它就是第一个加载的内容)

session_start();

然后包含 Composer 自动加载器,以便您可以访问该包。

require __DIR__ . '/vendor/autoload.php';

如何使用

设置通知

您可以使用 ::set 静态方法来设置通知。您需要传递一个 Noticeable\NoticeContent 对象,该对象接受一个 message 和一个 type

类型必须是 infosuccesserror。任何其他类型都会抛出 InvalidArgumentException 异常。

use Noticeable\Notice;
use Noticeable\NoticeContent;

Notice::set(
    new NoticeContent('Please enter an email address.', 'error')
);

获取通知

当您获取通知时,它将返回一个 Noticeable\NoticeContent 对象,如下所示

$notice = Notice::get();

print_r($notice);

// Will return
Noticeable\NoticeContent Object
(
    [message:protected] => Please enter an email address.
    [type:protected] => error
    [allowed_types:protected] => Array
        (
            [0] => info
            [1] => success
            [2] => error
        )

)

可用方法

$notice = Notice::get();

$notice->message(); // (string) Please enter an email address.

$notice->type(); // (string) error

使用通知

一旦您拥有通知,您就可以随意处理它,例如加载一个包含一些 HTML 的 PHP 文件来格式化消息。

Twig

我是 Twig 的大粉丝,所以我可能会这样做

$notice = Notice::get();

echo $twig->render('notice.twig', [
    'message' => $notice->message(),
    'type'    => $notice->type()
]);

然后我会将 notice.twig 文件布局如下

{% if message %}
    {% if type == 'info' %}
        {% set css_class = 'notice--info' %}
    {% elseif 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 %}