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

Routeについて知ってみる(Laravel11)

Last updated at Posted at 2024-12-05

概要

今回はRouteを利用してURLから指定されるパラメータをサーバ側で受け取ることについて知ってみます。
Routeについて簡単に説明するとパスが設定されているアドレス以外はアクセスが不可になります。
つまり、不正なアドレスからアクセスが不可ということです。

事前準備

Laravel11の環境がすでに準備されている方はこの事前準備はスキップしても大丈夫です。
Raspberry環境でLaravel11環境を構築については下記の記事を参照してみてください。
■Raspberry PIにLaravel11をインストール

■Hello World出力(Laravel11)

URLに指定されたパラメータの値をサーバ側で受け取る

①次のソースコードを「routes-web.php」に追加します。
「{name?}」の指定にて「?」がない場合は、必ず値の設定が必要です。そして{name ?}はパラメータが正しく指定されても値が画面に正しく表示されないです。
※「?」はNULL値を許容することです。
$name=nullはURLに値が指定されなかったらNULLに設定されます。もしここで$nameのように宣言した場合は、URLにパラメータの指定がない場合は、404エラーになります。

Route::get('/user/{name?}', function ($name=null) {
    return 'Hello, '.$name;
});

image.png
②次のURLを確認します。
確認URL:http://192.168.1.65:8000/users/tanaka
③次のようにURLに指定されているパラメータがサーバ側に渡された値を画面に表示ができます。
image.png

URLに指定されたパラメータの値を正規表現で制御

①次のソースコードを「routes-web.php」に追加します。
下記の正規表現では「0-9a-zA-Z」+から始まるproductIDの場合は正常に画面が表示されます。正規表現に対象外の場合は、404エラー画面が表示されます。

Route::get('/product/{id}', function ($id) {
    return response("Product ID:{$id}");
})->where('id','[0-9a-zA-Z]+')
;

image.png
②次のURLを確認します。
確認URL:http://192.168.1.65:8000/product/aaaa
③次のようにURLに指定されたパラメータをサーバ側に渡してその値を画面に表示ができます。
image.png

print_rの代わりにLaravel11ではdd($XXXX)を利用

①画面から受け取った値を画面に出したい場合は、次のコードに修正します。

Route::get('/users/{name?}', function ($name=null) {
    dd($name);
    return 'Hello, '.$name;
});

image.png
②次のURLを確認します。
確認URL:http://192.168.1.65:8000/users/tanaka
③次のようにURLに指定されたパラメータをサーバ側に渡してその値を画面に表示ができます。
image.png

requestのすべての値を画面に表示

①次のソースコードを「routes-web.php」に追加します。
※「use Illuminate\Http\Request;」も追加してください。

Route::get('/search?name=tanaka&age=55', function (Request $request) {
    dd($request);
});

②次のURLを確認します。
確認URL:http://192.168.1.65:8000/search?name=tanaka&age=55
③次のようにURLに指定されたすべてのパラメータが確認できます。
image.png

終わりに

今日はURLに指定されるパラメータの値を取得及び指定する際に正規表現でデータ入力の制限、画面から取得可能な$requestの値を確認してみました。
次回はHTMLテンプレート側になるblade templateについて確認しましょう。今日はここまでです。ありがとうございます。

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