2
0

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.

直前のリクエストURLからクエリパラメータを抽出

Last updated at Posted at 2022-03-08

リクエストクラスのquery()メソッドと同様の結果にしたい

use Illuminate\Http\Request;
$request->query()
array:1 [▼

"email" => "desc"
]

直前のリクエストURLからクエリパラメータを抽出

parse_url(url()->previous())
laravelヘルパのurl()から直前リクエストのurlを取得後にphpのparse_url関数で以下の形で取得できる
array:1 [▼
"scheme" => "http"
"host" => "http://localhost"
"path" => "/sort/index"
"query" => "email=desc"
]
ここから必要なqueryの値を取得して無理やり「=」で区切り、配列にする
その配列の最初をkeyにして最後をvalueにすることで、query()メソッドと同様にした

qiita.rb
$query = explode('=', Arr::get(parse_url(url()->previous()), 'query'));
$queryParam[Arr::first($query)] = Arr::last($query);

注意点

これはクエリパラメータがemail=descのように一つで来る前提なので、email=desc&name=hogeのように2つ以上きた場合は"query" => "email=desc&name=hoge"の形になるので、対応できない

他に良い方法ないかな〜

2022/03/09 追記

parse_str(Arr::get(parse_url(url()->previous()), 'query'), $queryParam);

$queryParamには上記の$queryParamと同様の結果が格納される
こちらであれば注意点は解消され、複数クエリパラメータで来ても問題ない

2
0
3

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?