🦀

Laravel(6.x)のFormFacadeサンプル

2020/12/31に公開

概要

見た目がスッキリするので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