1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クエリパラメータを使用してパラメータを受け渡す

Posted at

はじめに

  • 今回クエリパラメータを使用してパラメータの受け渡しを行う。
  • Controllerでパラメータを受け取り、where句を使ってルート先を変更させる。

クエリパラメータとは

クエリパラメータとはサーバーに情報をおくるために用意する、URLの文末に渡す値(変数)などのことを言う。(クエリ文字列ともいう)
検索などしたときにURLの?以降についている○○=△△というやつです。

スクリーンショット 2023-01-19 18.08.59.png

今回やりたいこと

  • 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タグだったりでできるようならそちらのほうがセキュリティ的にも良い??
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?