LoginSignup
1
3

More than 3 years have passed since last update.

(Laravel)bladeで変数$errors に任意のエラーメッセージを追加するディレクティブ

Last updated at Posted at 2020-01-28

(Laravel)bladeファイル内での $errors に、任意項目のエラーメッセージを追加するマクロ

app/Provider/BladeCustomizeProvider.php
        \Blade::directive('register_message_to_errors_variable', function ($expression) {
             [$key, $message] = explode(',',$expression);
            return "<?php if(!".'$errors->hasBag()){'.'$errors->put("default", (new \Illuminate\Support\MessageBag));}'.'$errors->add('."{$key}".",{$message}"."); ?>";
        });

使い方

form.blade.php
@register_message_to_errors_variable($key, '$errorsに登録したメッセージ')

{{ $errors->first($key) }}
{{-- 登録したメッセージが描画される  --}}

bladeフォーム内にValidationのエラーメッセージを出す処理にて$errors->first()を使用していて、この変数に任意のエラーを追加できるディレクティブを作成しました。

中の処理は上の記事に載せていただいていたクラスを辿り、$errors->add($key, $message);をすると、Illuminate\Support\ViewErrorMessageBagの__callメソッドにより、デフォルトのIlluminate\Support\MessageBagのインスタンスのaddメソッドが呼ばれ、メッセージの登録が行われて、$errors->first($key)でメッセージが取得できる、ということがわかりました。

この処理をまとめてディレクティブにして再利用することを目的として作りました。

以上です。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3