参考図書
Bladeテンプレートにフォームを用意
<form method="POST" action="/hello">
@csrf
<input type="text" name="msg">
<input type="submit">
</form>
CSRF対策
BladeディレクティブでCSRF対策ができる
CSRFとは、表示しているフォームとは別サーバーから悪意のあるプログラムをリクエストすること。
CSRF対策はブラウザ側とサーバー側でトークンを発行し、フォームから送信された時にそのトークンが一致しているかどうか確かめることで当該フォームからのリクエストかどうか確認している。
コントローラ側にアクションを用意する
class HelloController extends Controller{
public function index(){
$data = ['msg'=>'お名前を入力してください。'];
return view('hello.index', $data)
}
public function post(Request $request){
$msg = $request->msg;
return view('hello.index', $msg);
}
}
アクションの引数でRequestクラスをインスタンス化している。
当該インスタンスにはフォームからのPOST情報が含まれている
input nameでmsgとしたものも動的メソッドとして取り出すことが可能。
ルートでPOSTのアクションの設定
Route::post('hello', 'App\Http\Controllers\HelloController@post')