codenest / ahem

Ahem 是一个简单的 Laravel 扩展包,用于创建、管理和显示单个和多个请求通知消息。

dev-master 2014-06-19 08:57 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:56:50 UTC


README

A Laravel 4 扩展包,用于创建和管理通知

Ahem 可以简单实现以下功能:

  • 创建通知并添加其消息。
  • 在单个通知中添加多个消息。
  • 定义自定义通知类型或扩展现有类型。
  • 轻松定义每种通知类型如何渲染。
  • 轻松以 HTML 或 JSON 格式渲染通知。

安装

将以下内容添加到您的 composer.json

"codenest/ahem": "dev-master"

然后在终端中运行 composer update

为了开始使用 Ahem,您需要在应用程序中添加其服务提供者和外观。为此,打开 app/config/app.php

providers 数组中添加

'Codenest\Ahem\AhemServiceProvider',

并在 aliases 数组中添加

'Ahem'  =>  'Codenest\Ahem\Facades\Ahem',

配置。

默认情况下,Ahem 在其配置文件中定义了 successerrorwarninginfo 通知类型,您可能希望添加自己的类型、编辑或删除这些类型中的一些。为此,您需要通过运行以下命令将配置文件发布到您的应用程序中。

php artisan config:publish codenest/ahem

========================

基本用法。

在深入了解之前,让我们看看如何使用 Ahem 的默认通知类型。

添加通知

添加单个消息通知。

Ahem::success()->message('Login was successfully. Welcome.');
Ahem::error()->message('Wrong email or password.');
Ahem::info()->message('Somebody send you a message');
Ahem::warning()->message('Your account subscription will expire in 3 days. Please renew.');

为通知提供唯一的 id

Ahem::success('login_success')->message('Login was successfully. Welcome.');
Ahem::error('login_error')->message('Wrong email or password.');

在上面的例子中,我使用了 login_successlogin_error 作为 id。这个 id 唯一地标识了通知,如果您在单个请求上有多个通知,并且希望在以后引用其中的一些,我建议使用它。如您在第一个示例中看到的那样,id 不是必需的。您也可以将其留空,通知将被分配一个唯一的整数 id

多个消息和通知标题。

添加带有标题的消息数组。

Ahem::error('login_error')
		->messages(array('email' => 'Enter a valid email address', 'password' => 'The password field is required'))
		->heading('Something went wrong');

添加验证错误消息。

public function postLogin()
{
    $rules = array (
                'email' => 'email|required',
                'password'   => 'required'
        );
   $validator = Validator::make( Input::all(), $rules);
   if($validator->passes())
   {
       Ahem::success('login_success')->message('Login was successfully. Welcome!!');
	   return Redirect::to('/');
   }
   else 
   {
      Ahem::error('login_error')->messages($validator->messages())->heading('Something went wrong.');
	  return Redirect::back()->withInput();
   }       
}

同一请求的通知。

正如我们稍后将要看到的,通知在创建时自动闪入会话,并在渲染后被清除,您可能希望为单个请求添加不需要闪现的通知。我们通过简单地设置 flashablefalse 来实现这一点。

Ahem::error('login_error')->message('Login error. Try again.')->flashable(false);

=======================

渲染通知。

渲染所有可用的通知。

{{ Ahem::renderAll() }}

渲染特定类型的所有可用通知。

{{ Ahem::renderAll(array('error', 'warning')) }}

渲染给定类型的所有通知。

{{ Ahem::renderError() }}
{{ Ahem::renderSuccess() }}

渲染特定的通知。

{{ Ahem::renderError('login_error') }}
{{ Ahem::renderSuccess('login_success') }}

渲染通知但不从会话中清除它们。

我之前提到,在渲染闪现通知后,它会自动从会话中清除。在某些情况下,我们可能需要在渲染后保留一些通知在会话中。

渲染并保留所有可用的通知。

{{ Ahem::renderAllButKeep() }}

渲染并保留特定类型的所有可用通知。

{{ Ahem::renderAllButKeep(array('error', 'warning')) }}

渲染并保留给定类型的所有通知。

{{ Ahem::renderButKeepError() }}
{{ Ahem::renderButKeepSuccess() }}

渲染并保留特定的通知。

{{ Ahem::renderButKeepError('login_error') }}
{{ Ahem::renderButKeepError('login_success') }}

扩展