sayful1 / slim-flash
使用 sweetAlert 为 Slim Framework 3 实现简易的 Flash 通知
1.0.1
2018-01-24 05:30 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-27 12:17:03 UTC
README
此仓库包含一个 Slim Framework Flash 消息服务提供者。这允许您定义只从当前请求持续到下一个请求的短暂消息。
安装
通过 Composer
$ composer require sayful1/slim-flash
需要 Slim 3.0.0 或更高版本。
用法
// Start PHP session session_start(); $app = new \Slim\App(); // Fetch DI Container $container = $app->getContainer(); // Register provider $container['flash'] = function () { return new \Sayful\SlimFlash\Flash(); }; $app->get('/foo', function ($req, $res, $args) { // Set flash message for next request $this->flash->success('Test', 'This is a message'); // You may also do $this->flash->info('Info!', 'This is info message.'); $this->flash->warning('Warning!', 'This is warning message.'); $this->flash->error('Title', 'This is error message.'); // All method can also take on parameter $this->flash->success('This is message without title.'); // Redirect return $res->withStatus(302)->withHeader('Location', '/bar'); }); $app->get('/bar', function ($req, $res, $args) { // Get flash messages from previous request $messages = $this->flash->getMessages(); print_r($messages); // Get the first message $test = $this->flash->getFlashMessage(); print_r($test); }); $app->run();
幕后,这将在会话中设置几个键
- 'flash_message'
- 'flash_message_overlay'
将 Flash 作为全局变量添加到 Twig-View。有关 Twig-View,请参阅 Slim Framework Twig View 的文档
$container['view'] = function ($container) { ... // Add flash as global variable to twig view $view->getEnvironment()->addGlobal( 'flash', $container->flash ); ... };
将此消息闪存到会话后,您现在可以在您的视图(s)中显示它。也许像使用 twig-view 包一样
{% if flash.getFlashMessage() %}
<script type="text/javascript">
{% if flash.getFlashMessage.message %}
swal({
title: "{{ flash.getFlashMessage.title }}",
text: "{{ flash.getFlashMessage.message }}",
icon: "{{ flash.getFlashMessage.label }}",
button: false,
timer: 2000
});
{% else %}
swal({
text: "{{ flash.getFlashMessage.title }}",
icon: "{{ flash.getFlashMessage.label }}",
button: false,
timer: 2000
});
{% endif %}
</script>
{% endif %}
请注意,此包针对与 sweetAlert 的使用进行了优化。
您还可以使用 Bootstrap 实现此包
{% if flash.getFlashMessage() %}
{% if flash.getFlashMessage.message %}
<div class="alert alert-dismissible alert-{{ flash.getFlashMessage.label }}" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">×</span></button>
<h4 class="alert-heading">{{ flash.getFlashMessage.title }}</h4>
<p>{{ flash.getFlashMessage.message }}</p>
</div>
{% else %}
<div class="alert alert-dismissible alert-{{ flash.getFlashMessage.label }}" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">×</span></button>
{{ flash.getFlashMessage.title }}
</div>
{% endif %}
{% endif %}
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件