2018/10/12
Laravelは様々な「ヘルパー」PHP関数を用意しています。
今回はLaravelで用意されているヘルパー関数について勉強しました。
よく利用しそうなヘルパー関数を取り上げます。
また以前作成した簡易フォームでLaravelのヘルパー関数で記述できるものは置き換えてみます。
よく使うLaravelのヘルパー関数
with関数
ビューに変数を渡す際にもLaravelのwith関数を利用することができます。
: #ビューファイルに変数と連想配列を渡す return view('edit',['message' => '編集フォーム','data' => $data]); :
↓
: #ビューファイルに変数と連想配列を渡す #複数渡す場合はメソッドチェーンで記述する return view('edit')->with('message', '編集フォーム' )->with('data',$data); :
urlに関する関数
一覧ページに編集ボタンを置いたときにパラメータをそえてリンクをかけました。
{{-- 子テンプレート --}} {{-- resources/all.blade.php --}} : <td> <a href="/greeting/edit/{{$val->id}}" class="btn btn-primary btn-sm"> 編集 </a> </td> :
このAタグのリンク先をLaravelのヘルパーを使って記述します。
※ドキュメントルートを変更したのでリンク先は変更しています。
/mylaravel/public/greeting/edit/{{$val->id}} ⇒ /greeting/edit/{{$val->id}}
url関数とaction関数の二通りの記述ができます。
url関数
url関数は指定されたパスへの完全なURLを生成します。
{{-- 子テンプレート --}} {{-- resources/all.blade.php --}} : <td> <a href="{{ url('/greeting/edit', $val->id) }}" class="btn btn-primary btn-sm"> 編集 </a> </td> :
action関数
action関数は指定されたコントローラアクションからURLを生成します。
{{-- 子テンプレート --}} {{-- resources/all.blade.php --}} : <td> <a href="{{ action('GreetingController@edit', $val->id) }}" class="btn btn-primary btn-sm"> 編集 </a> </td> :
method_field関数
編集フォームから値を送信するHTTPメソッドはpatchメソッドを利用します。
HTMLはpatchメソッドをサポートしていないので隠しメソッドとして記述しました。
<input type="hidden" name="_method" value="PATCH">
method_field関数はフォームのHTTP動詞の見せかけの値を保持する「隠し」HTTP入力フィールドを生成します。
{{ method_field('patch') }}
csrf_field関数
フォームを作成したときにCSRFの記述をしました。
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
csrf_field関数を使うと以下の記述でOKです。
{{ csrf_field() }}
old関数
以前、フォームから入力されたデータにバリデーションをかけるチュートリアルをしました。
実は上記のスクリプトだとエラー表示した場合、入力したデータは消えてしまいます。
<input type="text" name="onamae" class="form-control" placeholder="名前を文字を入力してください" autofocus>
バリデーションにひっかかっても、入力したデータをそのまま表示させるにはold関数を利用します。
<input type="text" name="onamae" value="{{ old('onamae') }}" class="form-control" placeholder="名前を文字を入力してください" autofocus>
redirect関数
redirect関数はUPDATE処理が終わったときに使用していましたね。
return redirect('/greeting')->with('status', 'UPDATE完了!');
その他のLaravelで用意されている使用可能な関数はこちら
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。