52
43

More than 3 years have passed since last update.

【Laravel】URLからパラメータを渡す方法について

Posted at

はじめに

大きく分けてルートパラメータとクエリ文字列があります
それぞれについて説明します。

ルートパラメータを使う

まず、ルートパラメータについて説明します。
ルートパラメータは簡単な方法で
例えば、、
http://localhost:8000/hello
などでアクセス時に値(上の場合はhello)を渡す方法です
実装していく機能の概要は
URLからメッセージの文字列を取得して、コントローラーから取得して、アクセス先のビューに返します

URLにパラメータを持たせる

URLにパラメータを設定できるようにします。

routes/web.php
Route::get{'/{message}', 'UserController@index');

/{message}にアクセスするとUserControllerindexアクションに繋がるように設定します。
{message}の部分にhellowelcomeなど好きな言葉を記述してください

コントローラでパラメータを取得する

まずコントローラを作成します。

ターミナル
$ php artisan make:controller UserController

ルートパラメータから値を受け取ってアクセス先のビューファイルに値を渡します。

app/Http/Controllers/UserController.php
public function index($message)
{
    $data = $message;
    return view('user.index', $data);
}

index($message)$messageを引数にします。
そして、$messageにルートパラメータに記述した値が入っています。
resources/viewsにあるuser/index.blade.php$dataを渡して表示させます。

ビューで表示させる

コントローラーから送られた値をビューで表示させます

user/index.blade.php
<p>{{message}}</p>

上記のコードをビューファイルに記述することで表示できます!!

これがルートパラメータを使って値を送る方法の簡単な例です

クエリ文字列を使う

次に、クエリ文字列を使う方法について説明します
クエリ文字列は身近なところで言うと、検索機能などで使われています!
例えば、、
http://localhost:8000?serch=〇〇
などでアクセス時に値を渡す方法です

今回説明する方法は上で説明したものと同じような機能をクエリ文字列を使って実装していきます。

ルーティングの記述

クエリ文字列を利用する時はルーティングには特別な記述はいりません
下記のような記述をしてください

routes/web.php
Route::get{'/', 'UserController@index');

コントローラでパラメータを拾う

URLに記述したクエリ文字列を取得し、ビューファイルに渡します。

app/Http/Controllers/UserController.php
public function index(Request $request)
{
    $data = $request->message;
    return view('user.index', $data);
}

Request $request
  $requestをRequestクラスのインスタンスとして作成しています。
$request->message
  URLのに記述したクエリ文字列(message=hello)は
  $requestの中にmessageとして入っています。

http://localhost:8000?message=hello
にアクセスすると表示されます。

まとめ

基本的な2つの方法について説明しました。
今回は簡単な機能について説明しましたが、基本になります。
この説明を応用することで色々な機能が実装できるので挑戦してみてください!!

疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!

52
43
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
52
43