Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

基礎知識

Laravelのヘルパー関数を利用する

2016/12/02

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 5.2 ヘルパー関数

 

-基礎知識