#Formタグでフォームを書いてみよう
###例)
<form action="{{ url('/message/add')}}" method="POST" class="form-horizontal">
{{ csrf_field() }}
<textarea rows="6" name="message"></textarea>
<button type="submit" name="add">
追加
</button>
</form>
//route
Route::post('/message/add', function(Request $request){
});
###解説
action=送信先プログラムのURLを指定する
method=送信の際の転送方法(HTTPメソッド)を指定する
入力された情報はパラメーターとして送信されます。
取得方法はRequestクラスのプロパティ$requestとします。
{{ csrf_field() }}はcsrf(クロスサイトリクエストフォージェリ)対策の記述です。
#Formファサード
laravelcollective/htmlに定義されています。
###例)
{{ Form::open(array('url' => '/test', 'method' => 'post')) }}
<input type="text" id="name">
<input type="submit">
{{ Form::close() }}
###解説
action属性は'url'でPathを指定します。
method属性はメソッド名を指定します。
#引数を入れない場合
{{ Form::open() }}
→下記のように変換される。
<form method="POST" action="http://同じurl" accept-charset="UTF-8">
<input name="_token" type="hidden" value="somelongrandom string">
POSTメソッドを使用してフォームを開始し、
actionに現在のURLを用いて、accept-charset="UTF-8"を追加します。
また、CSRF対策にtokenが追加されます。
#ファイルをアップロードする
{{Form::open(['files' => true])}}
→HTMLは下記のようになりenctype="multipart/form-dataが追加される
<form method="POST" action="http://currenturl" accept-charset="UTF-8"
enctype="multipart/form-data">
<input name="_token" type="hidden" value="somelongrandom string">