#この記事を書くきっかけ
ファサードレシピは日本語版のLaravel Recipedに記述されているが,よく使用しているものについてまとめが欲しいなと思った.ので,自分で作っちゃおう!ついでにファサードについても改めてしっかり理解してしまおうという魂胆.
Formファサードのレシピは下記のリンクから確認できるからぜひみてみて欲しい.
[http://recipes.laravel.jp/category/17]
#そもそもファサードとは
ファサード(Facade)という単語の意味ですが,「建物の入り口」らしい.
ファサードとはクラスメソッドの形式でサービス(クラス)を手軽に利用できる機能である.ファサードを利用するメリットには,複雑な依存関係にあってもシンプルな記述で済むことにある.
#早速レシピをまとめていくよ
##HTMLフォームを作成
Form::open()メソッドを利用する.いくつか利用の方法がある.が,今回はデフォルト値を利用する方法を記述する.
・デフォルト値を利用する方法
{{Form::open()}}
生成されるHTMLは下記のようになる.
<form method="POST" action="http://currenturl" accept-charset="UTF-8">
<input name="_token" type="hidden" value="somelongrandom string">
##フォームを閉じる
Form::close()メソッドを利用する.
{{ Form::close() }}
※注意
これはを生成するだけのメソッドではない.定義されているラベルやフォームモデルを利用している場合は内部でそれらをリセットする.実装しているWEBページで複数のフォームを実装している場合に重要なポイントになる.
##フォームラベルを作成
Form::label()メソッドを利用する.
下記のように2つの引数を利用する(名前と値).
{{Form::label('name', 'Your Name')}}
これは下記のように出力される.
<label for="name">Your Name</label>
第三引数に配列を利用すると属性を追加することができる.
{{Form::label('name', 'Your Name', ['class' => 'mylabel'])}}
※'値'の引数を省略することも可能.
##テキスト入力フィールドを作成
Form::text()メソッドを利用.
第一引数にフィールド名,第二引数にvalue,第3引数に配列を入れて,利用する.
{{Form::text('first_name', 'Chuck', ['class' => 'field'])}}
下記のように出力される.
<input class="field" name="first_name" type="text" value="Chuck">
※
このメソッドはForm::input()に"text"タイプを指定して利用している.
以前のリクエストがこのフォームから送信された場合に,セッションから値を取得し,自動的にユーザが最後に入力した値が利用される.
##hiddenフィールドを作成
Form::hidden()メソッドを利用する.
フィールド名と値をそれぞれ指定する.
{{Form::hidden('invisible', 'secret')}}
下記のようなシンプルなエレメントが作成される.
<input name="invisible" type="hidden" value="secret">
属性を追加する場合は,第3引数に配列を利用する.
{{Form::hidden('invisible', 'secret', ['id' => 'invisible_id'])}}
フィールドにidが追加される.
<input id="invisible_id" name="invisible" type="hidden" value="secret">
※このメソッドはForm::input()に"hidden"タイプ江尾指定して利用している.
##リセットボタンを作成
Form::reset()メソッドを利用する.
第一引数にはvalue,属性を追加する際には第二引数に配列を利用する.
{{Form::reset('Clear form', ['class' => 'form-button'])}}
下記のように出力される.
<input class="form-button" type="reset" value="Clear form">
##Submitボタンを作成
Form::submit()メソッドを利用する.
引数を指定せずに利用可能である.valueを指定する際には第一引数を利用する.また属性を追加する場合は,第二引数に配列を利用する.
{{Form::submit('Save', ['class' => 'btn'])}}
下記のように出力される.
<input class="btn" type="submit" value="Save">
##以前の入力値がからかどうかを確認する
以前の入力値があるかどうかを確認したい時は,Form::oldInputIsEmpty()メソッドを利用する.
if (!\Form::oldInputIsEmpty()) {
// フィールドを指定してチェックしてみましょう
}
#まとめ
最近Formファサードを利用し始めてから,使ってるなーと思うものをまとめてみました.今後も利用してくことでよく使うことになるなと思うものがあったらまたまとめようかなと思います.