Loading...
LaravelPHP自作パッケージ

laravelフラッシュメッセージ

Laravelで、簡単なフラッシュメーセージを使いたい場合にどうぞ! https://github.com/kaoken/laravel-flash-message
自分の場合は、AngularJsを使用しているので、Angular2-Toasterと組み合わせて使用しています。

インストール

composer:
composer require kaoken/laravel-flash-message

初期設定

config\app.php に以下のように追加:

    'providers' => [
        ...
        Kaoken\FlashMessage\FlashMessageServiceProvider::class,
    ],

    'aliases' => [
        ...
        'FlashMessage' => Kaoken\FlashMessage\Facades\FlashMessage::class,
    ],

ミドルウェア

下記のミドルウェアで、FlashMessageをインスタンス化した$flashMessageという変数で、全て、または一部のBladeテンプレートで使用できるようにする為のもので、
view('test',['flashMessage' => FlashMessage::getInstance()])という感じに、個々で使用したい場合は、追加しないこと。

app\Http\Kernel.php に以下のように追加:

//-----------------------------------------------------
protected $middleware = [
    ...
   Kaoken\FlashMessage\FlashMessageMiddleware:class
//-----------------------------------------------------
// または
protected $middlewareGroups = [
   'web' => [
       ...
       Kaoken\FlashMessage\FlashMessageMiddleware:class
//-----------------------------------------------------
// または
protected $routeMiddleware = [
   ...
   'flash.message' => Kaoken\FlashMessage\FlashMessageMiddleware:class

メソッド一覧

メソッド一覧 説明
getInstance() 自身インスタンスを返す。
hasSuccess() 成功メッセージがあるか?ある場合は’true’を返す。
hasInfo() 情報メッセージがあるか?ある場合は’true’を返す。
hasWarnings() 警告メッセージがあるか?ある場合は’true’を返す。
hasError() エラーメッセージがあるか?ある場合は’true’を返す。
successes() 成功メッセージを配列で取得する。
info() 情報メッセージを配列で取得する。
warnings() 警告メッセージを配列で取得する。
errors() エラーメッセージを配列で取得する。
pushSuccess($msg) 成功メッセージを加える。$msgの型は何でも良い。通常は、文字列を使用する。
pushInfo($msg) 情報メッセージを加える。$msgの型は何でも良い。通常は、文字列を使用する。
pushWarning($msg) 警告メッセージを加える。$msgの型は何でも良い。通常は、文字列を使用する。
pushError($msg) エラーメッセージを加える。$msgの型は何でも良い。通常は、文字列を使用する。

使用例

Testコントローラー
<?php
namespace app\Http\Controllers;

use FlashMessage;
use App\Library\Http\Controllers\Controller;

class Test extends Controller
{
    public function getTest01()
    {
        // 文字列のみ
        FlashMessage::pushSuccess('This is test messege');
        // 任意のオブジェクト
        $o = new \stdClass();
        $o->title = 'title 01';
        $o->text = 'text 01';
        FlashMessage::pushError($o);
        $o = new \stdClass();
        $o->title = 'title 02';
        $o->text = 'text 02';
        FlashMessage::pushError($o);

        return redirect('test02');
    }
    public function getTest02()
    {
        return view('test');
    }
}

test.blade.phpテスト用テンプレート
@php
  $errorMessages = $flashMessage->errors();
  $successMessages = $flashMessage->successes();
@endphp

{{--成功メッセージ--}}
@if( $flashMessage->hasSuccess() )
  <h1>成功メッセージ</h1>
  @for($i=0;$i<count($successMessages);$i++)
    <hr />
    {{$successMessages[$i]}}
  @endfor
  <hr />
@endif

{{--エラーメッセージ--}}
@if( $flashMessage->hasError() )
  <h1>エラーメッセージ-</h1>
  @for($i=0;$i<count($errorMessages);$i++)
    <hr />
    {{ $errorMessages[$i]->title }}<br />
    {{ $errorMessages[$i]->text }}<br />
  @endfor
  <hr />
@endif
例えば、最初の接続でhttp://hoge/test01,Test@getTest01呼び出した場合、FlashMessageでメッセージが保存される。
次の接続で、http://hoge/test02,Test@getTest02呼び出した場合、テスト用テンプレートtest.blade.phpが表示され、 このとき下記のように表示される。
<h1>成功メッセージ</h1>
<hr />
This is test messege
<hr />


<h1>エラーメッセージ-</h1>
<hr />
title 01<br />
text 01<br />
<hr />
title 02<br />
text 02<br />
<hr />
更新ボタンを押すと、FlashMessage内の全てのメッセージ削除され、表示されなくなる。

コメントを残す

%d人のブロガーが「いいね」をつけました。