- 1. 概要
- 2. 変数の省略値
- 3. 配列
1. 概要
「.blade.php」の中で、変数を使って表示するには
{{ $hogehoge }}
と書けばいいわけですし、前ページで、タグが展開されない場合の記述法
{!! $hogehoge !!}
も書きましたが。
この変数が定義されていない場合・・・。

てな、エラーになっちゃうわけです。
しかし、これ「form」の「input」タグの「value」に限って、未定義の変数を書くことが許されているようです。
まぁ、これ「.blade.php」の先頭で
@inject('request', 'Illuminate\Http\Request')
@php
$array = $request->all();
てなこと書いて、「POST」を展開した値を使うときに、未定義だったりすることがあるのかしら?
本ページは、下記のサイトを参考にさせていただきました。
「【Laravel】配列にデフォルト値を設定する方法」
2. 変数の省略値
「smarty」で書くと
<input type="hidden" name="fugafuga" value="{$hogehoge|default:''}">
って、書くやつですね。
「smarty」の場合は、別に「input」タグに限らず、どの場面でも使えますが・・・。
「Laravel」の場合は、下記のように記述します。
<input type="hidden" name="fugafuga" value="{{ $hogehoge ?? '' }}">
3. 配列
配列だと、前項のようには、いかんでした。
冒頭で説明しているものだと、基本配列なので、結局、前項では解決できない。
しかし、参考サイトのおかげで、これの解法もありました。
仮に
$array['fugafuga']
というキーが、ない場合。
{{ $array['fugafuga'] || '' }}
と書くと「Undefined array key "fugafuga"」てなことで、例外が発生しちゃいます。
配列にキーが存在すればその値を、キーが存在しなければ省略値を表示するには・・・ちょっとこれ、「HTML」上に書くのが難しいのですが・・・
<input type="hidden" name="fugafuga" value="">
と書いた、「value=""」のダブルコーテーション内に
@php print(Arr::get($array, 'fugafuga', '')); @endphp
と書くことで解決します。
つまり
Arr::get($array, 'fugafuga', '');
という「Arr::get()」メソッドでは、第一引数に配列、第二引数にキー、第三引数に省略値を書くことで。
配列にキーが存在しない場合の省略値を設定することができます。
|