PHP - Laravel - ビュー - 変数の省略値

 
1. 概要
2. 変数の省略値
3. 配列

1. 概要

 「.blade.php」の中で、変数を使って表示するには

{{ $hogehoge }}
 と書けばいいわけですし、前ページで、タグが展開されない場合の記述法

{!! $hogehoge !!}
 も書きましたが。  この変数が定義されていない場合・・・。
Undefinde variable

 てな、エラーになっちゃうわけです。

 しかし、これ「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()」メソッドでは、第一引数に配列、第二引数にキー、第三引数に省略値を書くことで。  配列にキーが存在しない場合の省略値を設定することができます。
ハイスピードプラン