mzur / kirby-flash
将数据存储在会话中以便于下一次请求。数据将在下一页加载后删除。
v2.2.0
2023-01-05 18:59 UTC
Requires
Requires (Dev)
- getkirby/cms: ^3.0
- mzur/kirby-defuse-session: ^1.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-05 22:19:26 UTC
README
这是对 jevets\kirby-flash 的分支。
允许您将数据“闪存”到会话中,该数据将在下一次页面加载时通过会话可用,之后数据将从会话中删除。
非常有用
- 保存提交的表单数据以供表单验证,特别是用于 Post/Redirect/Get 设计模式
- 在页面重新加载后显示成功或错误消息
快速示例
flash('thanks_message', 'Thank you for contacting us!');
其他地方...
<?php if (flash('thanks_message')): ?> <?php echo flash('thanks_message') ?> <?php endif ?>
安装
使用 composer 安装
# Kirby v2 composer require mzur/kirby-flash:^1.0 # Kirby v3 composer require mzur/kirby-flash:^2.0
用法
设置数据
flash('key', 'value'); flash('messages.success', ['Thanks for your feedback!']); flash('messages.errors', ['Email is a required field']); flash('username', 'jimihendrix');
获取数据
$value = flash('key'); $success_messages = flash('messages.success'); // Array( 0 => 'Thanks for your feedback!' ) $username = flash('username'); // "jimihendrix"
示例
flash('messages.errors', [ 'Email is required', 'Password is required', ]); flash('messages.errors'); // Array( 0 => 'Email is required', 1 => 'Password is required' )
<?php if (count(flash('messages.errors')) > 0): ?> <div class="alert alert-error"> <?php foreach (flash('messages.errors') as $message): ?> <div><?= html($message) ?></div> <?php endforeach ?> </div> <?php endif ?>
flash()
辅助函数
此类加载一个全局辅助函数: flash($key, $value = '')
。
flash()
函数仅在它尚未定义的情况下定义,因此如果需要,您可以定义自己的 flash()
函数。大多数时候,您可能只需要在您的应用程序中使用 flash()
。
当 使用一个参数调用 时,返回值。如果密钥不存在,则返回空字符串。
flash('my_key');
当 使用两个参数调用 时,将 $value
设置为 $key
。
如果 $key
已经存在,则 $value
将替换现有的 $key
的值。
flash('my_other_key', 'Some Value'); flash('my_other_key', 'Some Other Value'); flash('my_other_key'); // "Some Other Value"
您可以在会话中存储任何类型的数据。作为另一个示例,您可以将多个表单验证错误消息作为数组存储在单个键中。
flash('messages.errors', ['Email is required.', 'Phone is required.']); flash('messages.errors'); // Array( 0 => 'Email is required.', 1 => 'Phone is required.' )
仅当前页加载的闪存
有时将消息闪存到当前页面加载,而不是下一次加载,可能会很有用。这种用例出现在需要在对同一请求的响应中显示消息,而不是重定向时。
您可以使用可选的第三个参数,一个布尔值来切换是否仅保留闪存变量用于当前请求。此参数的默认值为 false
,这将保留闪存变量用于下一次请求。
flash('message', 'Message for redirect'); // Keep for next request flash('message', 'Message for this response', true); // Keep only for current request ## Session Key By default Flash stores data under the session key `_flash`. So you *could* access flash data like `$kirby->session()->get('_flash')` if you wanted to. ### Changing the Session Key Use the static method to change the flash key. (You should probably do this early on in your app, probably in `index.php` or `site.php`.) ```php Jevets\Kirby\Flash::setSessionKey('_my_custom_key');
获取会话键
Jevets\Kirby\Flash::sessionKey();
贡献
请随意发送拉取请求!
问题/错误
请使用 GitHub 问题跟踪器。