rboonzaijer/laravel-multiple-flash-messages
Composer 安装命令:
composer require rboonzaijer/laravel-multiple-flash-messages
包简介
Multiple flash messages with Laravel
关键字:
README 文档
README
- Supports flashing multiple messages to the session
- Flexible messages - fill the
$optionsarray with your custom data - Helper methods that can easily be remembered and allows clean controllers
- Inertia + Vue implementation example included below
- Automated tests running on Laravel 10
Install
composer require rboonzaijer/laravel-multiple-flash-messages:^1.0
Usage
class UserController { public function store() { // ... flash('User created'); flashWarning('User has no permissions yet'); return to_route(...); }
Blade view example
{{-- /resources/views/layouts/app.blade.php --}} @include('partials.flash-messages.container')
{{-- /resources/views/partials/flash-messages/container.blade.php --}} @if(session()->has('messages')) <div class="flash-messages"> @foreach(session()->get('messages') as $index => $message) @include('partials.flash-messages.message', [ 'index' => $index, 'message' => $message ]) @endforeach </div> @endif
{{-- /resources/views/partials/flash-messages/message.blade.php --}} <div class="alert alert-{{ $message['type'] }}" onclick="javascript:this.remove();"> <span>{{ $message['message'] }}</span> </div>
Flexible - Use your own message types and custom data
flash('Flagged', [ 'type' => 'danger-flagged', 'description' => 'You have been flagged for creating to many users', 'details' => [ 'ticket' => 123, 'urls' => [ 'https://example.com', 'http://example.com', ] ] ]);
{{-- /resources/views/partials/flash-messages/message.blade.php --}} <div class="{{ $message['type'] }}" id="flash-message-{{ $index }}"> <span class="title"> {{ $message['message'] }} @if(isset($message['details']['ticket'])) <span>- Ticket #{{ $message['details']['ticket'] }}</span> @endif </span> @if(isset($message['description'])) <p class="description"> {{ $message['description'] }} </p> @endif @if(isset($message['details']['urls'])) <ul class="urls"> @foreach($message['details']['urls'] as $index => $url) <li> <a href="{{ $url }}"> {{ $url }} </a> </li> @endforeach </ul> @endif </div>
Helper methods
These helper methods are available and they all use the same arguments.
- @param string $message ( required ) - Contains the message
- @param array $options ( default = [ ] ) - add additional info in the array
- @param boolean $flashToSession ( default = true ) - for special use cases (see below)
flash($message, $options, $flashToSession); flashInfo($message, $options, $flashToSession); flashSuccess($message, $options, $flashToSession); flashWarning($message, $options, $flashToSession); flashError($message, $options, $flashToSession);
Manually flash to the session
This can be used if you want to send the messages only if a certain condition is met, for example:
flash('Saved', [], Auth::user()->hasNotificationsEnabled());
or
flash('Saved', [], false); // ... if(Auth::user()->hasNotificationsEnabled()) { flashMessagesToSession(); }
Inertia + Vue + Tailwind + DaisyUI example
- https://inertiajs.com/pages#persistent-layouts
- https://inertiajs.com/pages#default-layouts
- https://tailwindcss.com/docs/guides/laravel
- https://daisyui.com/components/toast/
// app/Http/Middleware/HandleInertiaRequests.php public function share(Request $request): array { return array_merge(parent::share($request), [ 'messages' => fn () => session()->get('messages'), ]); }
<script setup> /* /resources/js/Shared/Layout.vue */ import FlashMessages from '../Shared/FlashMessages.vue'; </script> <template> <!-- ... --> <FlashMessages /> <!-- ... --> </template>
<!-- /resources/js/Shared/FlashMessages.vue --> <template> <div v-if="$page.props.messages" class="toast toast-top toast-end"> <div v-for="message, index in $page.props.messages" :key="index" class="flex justify-between alert" :class="'alert-' + message['type']"> <span>{{ message['message'] }}</span> <span class="btn btn-xs" @click="$page.props.messages.splice(index, 1)">x</span> <!-- Note: officially you should not remove props like this, but for messages I see no issue... --> </div> </div> </template>
/* tailwind.config.js */ /* Don't forget to set a safelist for classes that should always be available */ safelist: [ 'toast', 'toast-top', 'toast-end', 'alert', 'alert-info', 'alert-success', 'alert-warning', 'alert-error', ],
Testing
composer run test
rboonzaijer/laravel-multiple-flash-messages 适用场景与选型建议
rboonzaijer/laravel-multiple-flash-messages 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.8k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 01 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「notifications」 「alerts」 「flash-messages」 「laravel-notifications」 「laravel-multiple-flash-messages」 「laravel-flash-messages」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rboonzaijer/laravel-multiple-flash-messages 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rboonzaijer/laravel-multiple-flash-messages 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rboonzaijer/laravel-multiple-flash-messages 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel Nova package that adds a notification feed in your Nova app.
Easy flash messages
The core repository for PHPFlasher, hosting the source code, contributions, issue tracking, and discussions for the PHPFlasher project. This mono-repo serves as the hub for development and community engagement.
Add visual alerts / warnings to Flarum posts
Laravel package for managing session messages and alerts in view responses
Flash message manager to handle flashes outside presenters
统计信息
- 总下载量: 1.8k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 13
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-01-19