volnix/flashy

此包已被废弃且不再维护。作者建议使用 werx/messages 包。

用于处理消息和表单闪存数据的 Symfony 的 HTTP 基础会话闪存包装器

3.2.1 2017-06-19 16:34 UTC

This package is auto-updated.

Last update: 2022-02-01 12:33:36 UTC


README

简单包装器,围绕 Symfony 的 Session 闪存。

Build Status Coverage Status Total Downloads Latest Stable Version

Flashy 有两部分: 预填充数据消息

预填充数据

当用户输入有错误时,您通常会想要从最后一个请求中预填充表单数据。Flashy 可以接受来自任何来源的输入,无论是来自 POST/GET 还是生成的数组。它使用 Symfony 的 AutoExpireFlashBag 容器,所以数据在每次请求后都会被清除,无论是否读取。

通过调用 set 方法设置表单数据

use Symfony\Component\HttpFoundation\Request;
use Volnix\Flashy\FormData;

$request = Request::createFromGlobals();
$form_data = new FormData;
$form_data->set($request->query->all());

然后调用 get 方法来检索数据,可选地传递一个默认值,如果键未设置则使用此默认值。

use Volnix\Flashy\FormData;

$form_data = new FormData;
$form_data->set(['foo' => 'bar']);

echo $form_data->get('foo'); // bar
echo $form_data->get('bim', 'baz'); // baz

要清空表单数据存储,调用 clear 函数

use Volnix\Flashy\FormData;

$form_data = new FormData;
$form_data->set(['foo' => 'bar']);

echo $form_data->set('foo'); // bar

$form_data->clear();
echo $form_data->get('foo', 'baz'); // baz

消息

Messages 类将使处理闪存消息变得简单。它与 Bootstrap 3 有关联,用于其警报标记,但这可以轻松覆盖。它还使用 Symfony 的 AutoExpireFlashBag 容器。

使用 __call 魔法方法允许任何类型的消息,以实现最大程度的兼容性。

要设置消息类型,您可以调用任何函数,传入字符串或消息数组,例如:

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->error('Oh no!');
$messages->info(['Message one', 'Message two']);

您也可以将消息设置为 [类型 => 消息] 的数组,例如:

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->setAsArray(['error' => 'foo');

要作为数组检索它们,请使用 get 函数(如果没有传入参数,它将返回所有消息)

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->error('Oh no!');
$messages->info(['Message one', 'Message two']);

foreach ($messages->get('error') as $error_message) {
	echo $error_message;
}

$all_messages = $messages->get();

真正的魔法发生在您调用 getFormatted 函数时

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->error('Oh no!');
$messages->info(['Message one', 'Message two']);

// print all the error messages:
echo $messages->getFormatted('error');

// print all the messages:
echo $messages->getFormatted();

格式化消息以以下标记打印

<div class="alert alert-danger">
	<ul>
		<li>Message one</li>
		<li>Message two</li>
	</ul>
</div>

要覆盖默认的 Bootstrap 警报语法,将类覆盖数组传递给 getFormatted 函数

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->error('Oh no!');

echo $messages->getFormatted('error', ['error' => 'bip']);

将产生以下结果

<div class="bip">
	<ul>
		<li>Oh no!</li>
	</ul>
</div>

Messages 类还支持消息嵌套,例如:

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->error(['foo', 'bar' => ['bip', 'bap']]);

echo $messages->getFormatted('error');

将产生以下结果

<div class="alert alert-danger">
	<ul>
		<li>foo</li>
		<li>
			bar
			<ul>
				<li>bip</li>
				<li>bap</li>
			</ul>
		</li>
	</ul>
</div>

要清空消息存储,调用 clear 函数

use Volnix\Flashy\Messages;

$messages = new Messages;
$messages->set(['foo' => 'bar']);

echo $messages->get('foo'); // bar

$messages->clear();
echo $messages->get('foo', 'baz'); // baz