spanky / flasher
Requires (Dev)
- phpunit/phpunit: 4.1.1
This package is not auto-updated.
Last update: 2024-09-28 16:56:57 UTC
README
这是一个简单的PHP (5.3+) 包,用于简化在用户与网站交互时向他们显示反馈的过程。
当您希望在用户完成网站上某些操作后,在下一次页面加载时向用户提供反馈时,此包非常有用。例如,一条消息确认他们已成功注册或删除了他们的账户。
安装
安装此包最简单和最好的方式是通过 Composer。将 spanky/flasher
包添加到您的需求中,然后执行 composer install
。
{ "require": { "spanky/flasher": "dev-master" } }
安装完包后,在使用Flasher之前,请确保已要求Composer自动加载器。
require 'vendor/autoload.php';
用法
要开始运行,首先我们需要创建一个 Spanky\Flasher\FlasherManager
类的实例。
为此,只需在 Spanky\Flasher\Factory
类上调用 make()
方法。
<?php use Spanky\Flasher\Factory as Flasher; $flasher = Flasher::make();
如果使用 Spanky\Flasher\MessageStore\SessionMessageStore
实现来存储页面加载之间的消息(默认实现),确保在初始化包之前启动会话。
session_start();
设置消息
要将消息设置为在下次页面加载时显示,请调用 addMessage()
方法,并传入消息的内容。
$flasher->addMessage('Welcome to the website!'); $flasher->addMessage('Congratulations, you are now signed up!', 'success'); $flasher->addMessage('Oh no, something went wrong!', 'error');
第一个参数是要向用户显示的消息内容。这必须是字符串,或者是一个实现了 __toString()
方法的对象。
请注意,您还可以通过 addMessage()
方法的第二个参数指定一个可选的字符串来指明所提供消息的类型。
如果您愿意,也可以以下方式添加特定类型的消息
$flasher->addSuccess('Congratulations, you are now signed up!'); // identical to $flasher->addMessage('Congratulations, you are now signed up!', 'success');
显示消息
当涉及到实际向用户显示消息时,有一些方法可以帮助您以最大灵活性完成此操作。
if ($flasher->hasMessages()) { echo '<ul>'; foreach($flasher->getMessages() as $message) { echo '<li class="'.$message->getType().'">', $message, '</li>'; } echo '</ul>'; }
首先,我们使用 hasMessages()
方法检查是否有要显示的消息,该方法返回 true
或 false
,具体取决于是否有要显示的消息。
如果有消息,则通过调用 getMessages
方法检索它们,该方法返回一个包含 Spanky\Flasher\FlashMessage
对象的实例,这些对象代表消息。
可以通过在对象上调用 getType()
方法来获取消息类型,并通过调用 getContent()
方法或将其转换为字符串来获取实际内容。
仅显示特定类型的消息
要仅检查或显示特定类型的消息,将类型字符串传递给 hasMessages()
和 getMessages()
方法,如下所示
if ($flasher->hasMessages('success')) { echo '<ul>'; foreach($flasher->getMessages('success') as $message) { echo '<li class="'.$message->getType().'">', $message, '</li>'; } echo '</ul>'; }
仅显示第一条或最后一条消息
在某些情况下,您可能不希望显示所有消息,而只想显示第一条或最后一条。您可以通过在 Spanky\Flasher\Collections\MessageCollection
类上使用 first()
或 last()
方法轻松完成此操作。
if ($flasher->hasMessages('error')) { echo '<div class="error"><strong>', $flasher->getMessages('error')->first(), '</strong></div>'; }
与 Laravel 一起使用
如果您正在使用 Laravel 与此包一起使用,那么您可以利用提供的服务提供者和外观来跳过引导过程。
首先,将 Spanky\Flasher\Laravel\FlasherServiceProvider
添加到您的 config.php
文件中的 providers
列表。
'providers' => array( ... 'Spanky\Flasher\Laravel\FlasherServiceProvider', )
接下来,将以下键/值对添加到同一文件中aliases
列表中。
'aliases' => array( ... 'Spanky\Flasher\Laravel\Flasher' => 'Flasher' )
现在您可以通过在Flasher
"外观"类上静态调用Spanky\Flasher\FlasherManager
类的类名来使用该包。
Route::post('/login', function() { // logic code here Flasher::addSuccess('You are now logged in!'); return Redirect::to('dashboard'); });
测试
运行phpunit
以触发测试套件。