sebkay / noticeable
2.2.0
2020-12-01 12:54 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^9.4
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.2
README
Noticeable
轻松地将简单的闪存消息/通知输出到页面,但仅显示一次。
如何安装
建议您通过 Composer 安装此包。
composer require sebkay/noticeable
通知基于会话,将在下一次页面刷新时被删除。
首先您需要启动一个会话。将此代码放在项目文件的最开始(这样它就是第一个加载的内容)
session_start();
然后包含 Composer 自动加载器,以便您可以访问该包。
require __DIR__ . '/vendor/autoload.php';
如何使用
设置通知
您可以使用 ::set
静态方法来设置通知。您需要传递一个 Noticeable\NoticeContent
对象,该对象接受一个 message
和一个 type
。
类型必须是 info
、success
或 error
。任何其他类型都会抛出 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 %}