🦀
Laravel(6.x)のFormFacadeサンプル
概要
見た目がスッキリするのでLaravelの拡張としてよく使うFormFacade、
最近はSPAが主流なので使う機会が少なくなってきましたが、まだまだbladeを使う機会もあるので使い方を備忘録として残しておく。
公式はこちら
環境
- laravel:6.x
- laravelcollective/html: 6.x
前提
-
old()はLaravelのヘルパーであり、直前のフォームに入力した値を取得する働きをする。
- 第2引数は初期値
-
BootStrap4を使っているのでformで使うclassを指定している
-
セレクトボックス・ラジオボタン・チェックボックスで使う配列は下記のような形とする
$array = [
1 => 'hoge',
2 => 'fuga',
3 => 'piyo',
];
フォームの開始と終了
// 開始
{{ Form::open(['route' => ['user.update', 'user' => $user->id], 'method' => 'put']) }}
// 終了
{{ Form::close() }}
テキスト
一番使う基本的な形
emailとかpasswordとかはほぼ同じ形なので省略
{{ Form::text('name', old('name', $user->name), ['class' => 'form-control']) }}
セレクトボックス
第2引数に配列、第3引数に初期値を入力すればよい
{{ Form::select('sample_id', $array , old('sample_id', $user->sample_id) , ['class' => 'form-control']) }}
ラジオボタン
第3引数についてはbooleanを設定する。
この場合は三項演算子の省略でtrueかfalseを返すようにしている。
注意点として配列のキーに0をもたせていると強制一致してしまう場合があるのでその場合は===を利用する。
ここで真偽値表を確認するとよい
@foreach($array as $key => $val)
{{ Form::radio('sample_radio', $key, ($key == old('sample_radio', $user->sample_radio)), ['id' => 'radio'.$key]) }}
{{ Form::label('radio'.$key, $val) }}
@endforeach
チェックボックス
第3引数についてはbooleanを設定する。
この場合はin_arrayの戻り値を利用している。($keyが各配列に存在するかチェックしている)
in_arrayの比較が不安だという方はin_arrayの第3引数にtrueと書きましょう。
@foreach($array as $key => $val)
{{ Form::checkbox('sample_check[]', $key, in_array($key, old('sample_check', $user->sample_check)), ['id' => 'check'.$key]) }}
{{ Form::label('check'.$key, $val) }}
@endforeach
テキストエリア
HTMLを出力したい場合があるのでサンプルでは「!!」でエスケープ処理を解除した例を書いておく
{!! Form::textarea('memo', old('memo', $user->memo), ['class' => 'form-control']) !!}
最後に
自分用のメモですが、誰かのためになれば幸いです。
Discussion