tamtamchik / simple-flash
为PHP提供简单、无框架绑定的闪存通知。
Requires
- php: >=7.3
Requires (Dev)
README
为PHP提供简单、无框架绑定的闪存通知。受 laracasts/flash 和 plasticbrain/PHP-Flash-Messages 启发。它默认支持多个CSS框架
注意
以下文档适用于3.x版本!
如果您正在寻找2.x版本的文档,请参阅 此处。
如果您正在寻找1.x版本的文档,请参阅 此处。
安装
通过 Composer。
$ composer require tamtamchik/simple-flash
在您的项目中,确保启动会话并加载 Composer 自动加载,以确保一切正常工作。
<?php // Start a Session if( !session_id() ) { session_start(); } // Initialize Composer Autoload require_once 'vendor/autoload.php';
用法
使用库有3种方式
use \Tamtamchik\SimpleFlash\Flash; use function Tamtamchik\SimpleFlash\flash; // Instance $flash = new Flash(); $flash->message('Tea.'); // Static Flash::message('Earl Gray.'); // Function flash()->message('Hot!');
通过调用 message($message, $type = 'info')
方法添加的消息。在调用 flash()
函数的情况下,您可以将 $message, $type
传递给函数,如下所示:flash('resistance is futile')
。
由于任何创建类型都返回 \Tamtamchik\SimpleFlash\Flash
实例,因此您始终可以使用链式操作添加多个消息。所有基本消息类型都提供快捷方式,您还可以将数组作为 $message
传递。
use function Tamtamchik\SimpleFlash\flash; flash()->error(['Invalid email!', 'Invalid username!']) ->warning('Warning message.') ->info('Info message.') ->success('Success message!');
库默认支持4种不同类型的消息: error
、warning
、info
、success
。
<div class="alert alert-danger" role="alert"> <p>Invalid email!</p> <p>Invalid username!</p> </div> <div class="alert alert-warning" role="alert"><p>Warning message.</p></div> <div class="alert alert-info" role="alert"><p>Info message.</p></div> <div class="alert alert-success" role="alert"><p>Success message!</p></div>
渲染简单
use function Tamtamchik\SimpleFlash\flash; // Rendering specific type $output = flash()->display('error'); // Rendering all flash $output = flash()->display(); // Also rendering possible when you just read instance of \Tamtamchik\SimpleFlash\Flash object as a string (string) flash(); // or ... it's totally just for display, never do this in real life... <?php // ... some code $flash = new Flash(); $flash->warning('It is totally just for display, never do this in real life...'); // ... some other code ?> <!-- ... some html --> <div class="flashes"> <?= $flash; ?> </div> <!-- ... some other html -->
模板
使用模板,您可以自定义如何渲染闪存消息。该包提供了一套用于大多数流行CSS框架的模板
Templates::BASE; // Same as Templates::BOOTSTRAP Templates::BOOTSTRAP; // https://bootstrap.ac.cn Templates::FOUNDATION; // https://foundation.npmjs.net.cn Templates::BULMA; // https://bulma.org.cn Templates::MATERIALIZE; // https://materialize.node.org.cn Templates::TAILWIND; // https://tailwind.org.cn Templates::PRIMER; // https://primer.style Templates::UIKIT; // https://uikit.cn Templates::SEMANTIC; // https://semantic-ui.com.cn Templates::SPECTRE; // https://picturepan2.github.io/spectre Templates::HALFMOON; // https://www.gethalfmoon.com
快捷方式
您可以将模板名称作为 display()
函数的第二个参数传递
use function Tamtamchik\SimpleFlash\flash; flash()->success('Success message!'); ... // rendering with Halfmoon template using Templates::HALFMOON as a shortcut echo flash()->display('success', Templates::HALFMOON);
或者您可以使用描述性的显示函数
use function Tamtamchik\SimpleFlash\flash; flash()->success('Success message!'); ... echo flash()->displayBootstrap(); echo flash()->displayFoundation(); echo flash()->displayBulma(); echo flash()->displayMaterialize(); echo flash()->displayTailwind(); echo flash()->displayPrimer(); echo flash()->displayUiKit(); echo flash()->displaySemantic(); echo flash()->displaySpectre(); echo flash()->displayHalfmoon();
工厂
该包为大多数流行的CSS框架提供了一套模板
这些模板可以使用包中提供的 TemplateFactory 创建。所有模板都在 Templates 中定义了别名。
use Tamtamchik\SimpleFlash\Flash; use Tamtamchik\SimpleFlash\TemplateFactory; use Tamtamchik\SimpleFlash\Templates; // get template from factory, e.g. template for Foundation $template = TemplateFactory::create(Templates::FOUNDATION); // passing template via function flash('Info message using Foundation 6 template!', 'info', $template); // passing to constructor $flash = new Flash($template); // using setTemplate function $flash->setTemplate($template);
创建模板
模板基本上是任何实现了 TemplateInterface 的类。但为了简化操作,您可以扩展 BaseTemplate,它已经包含了大部分功能。
定义和使用此示例类作为模板
use Tamtamchik\SimpleFlash\BaseTemplate; use Tamtamchik\SimpleFlash\TemplateInterface; use function Tamtamchik\SimpleFlash\flash; class CustomTemplate extends BaseTemplate implements TemplateInterface { protected $prefix = '<li>'; // every line prefix protected $postfix = '</li>'; // every line postfix protected $wrapper = '<ul class="alert-%s">%s</ul>'; // wrapper over messages of same type /** * @param $messages - message text * @param $type - message type: success, info, warning, error * * @return string */ public function wrapMessages($messages, $type) { return sprintf($this->getWrapper(), $type, $messages); } } flash() ->setTemplate(new CustomTemplate) ->error(['Invalid email!', 'Invalid username!']) ->warning('Warning message.') ->info('Info message.') ->success('Success message!') ->display();
将输出以下内容
<ul class="alert-error"> <li>Invalid email!</li> <li>Invalid username!</li> </ul> <ul class="alert-warning"> <li>Warning message.</li> </ul> <ul class="alert-info"> <li>Info message.</li> </ul> <ul class="alert-success"> <li>Success message!</li> </ul>
接口
该包为Simple Flash模板提供了 TemplateInterface
。
变更日志
请参阅 CHANGELOG 获取更多有关最近更改的信息。
测试
$ composer tests
示例
$ composer examples
然后只需访问 http://localhost:8000
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
安全性
如果您发现任何安全相关的问题,请发送电子邮件至yuri.tam.tkachenko@gmail.com,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。