tamtamchik/simple-flash

为PHP提供简单、无框架绑定的闪存通知。

3.0.0 2023-01-26 15:45 UTC

README

Latest Version on Packagist Total Downloads Software License Build Status Coverage Status Quality Score SensioLabsInsight

为PHP提供简单、无框架绑定的闪存通知。受 laracasts/flashplasticbrain/PHP-Flash-Messages 启发。它默认支持多个CSS框架

simple-flash

注意

以下文档适用于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种不同类型的消息: errorwarninginfosuccess

<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

贡献

请参阅CONTRIBUTINGCONDUCT以获取详细信息。

安全性

如果您发现任何安全相关的问题,请发送电子邮件至yuri.tam.tkachenko@gmail.com,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。

Buy Me A Coffee