はじめに
- 今回クエリパラメータを使用してパラメータの受け渡しを行う。
- Controllerでパラメータを受け取り、where句を使ってルート先を変更させる。
クエリパラメータとは
クエリパラメータとはサーバーに情報をおくるために用意する、URLの文末に渡す値(変数)などのことを言う。(クエリ文字列ともいう)
検索などしたときにURLの?以降についている○○=△△というやつです。
今回やりたいこと
-
choice.blade.php
でクエリパラメータを使いcreateメソッドで受け取る -
group=○
というクエリパラメータを渡し、その値に応じてcreateメソッドでは反映させるものを変える -
create.blade.php
で反映させる
クエリパラメータを使う
クエリパラメータを使うにはフォームを使用し、getでリクエストしてあげる。
特にユーザーに入力してもらう箇所ではないので、hiddenを使い送信してあげる。
※これだけではわからないですが、choice.blade.php でいくつかカードのようなものを提示しており、それらのどれかを選択するような感じなので、あらかじめvalueの値は決まっています。
choice.blade.php
<form action="{{ url('/trsupportrecords/create') }}" method="get">
<input type="hidden" name="group" value="A">
<input class="btn btn-info btn-sm" type="submit" value="選択する">
</form>
Controllerでクエリパラメータを受け取る
今回createメソッドで受け取ったので下記のように記述する
Controller.php
public function create(Request $request) {
// クエリパラメータを受け取り$groupに入れる
$group = $request->group;
// where句を使いgroupカラムが先程受け取った$groupの値と等しいものをとってきて$trSupportMenusに入れる
$trSupportMenus = TrSupportMenu::where('group', $group)->get();
// Viewに返す
return view('trsupportrecords.create', compact('trSupportMenus'));
}
create.blade.php で使ってあげる
Viewではいつもどおりforeachで。使いたいカラムを書いてあげる。
@foreach ($trSupportMenus as $item)
{{$item->menu}}
{{$item->min_reps}}
{{$item->max_reps}}
{{$item->sets}}
@endforeach
これで良いのか??な点
- クエリパラメータを使う際フォームを使用してhiddenを使ってやってみたがこれが適切かどうか
- aタグだったりでできるようならそちらのほうがセキュリティ的にも良い??