LoginSignup
4
2

More than 3 years have passed since last update.

【Laravel】ルートパラメーターを簡単にまとめ

Last updated at Posted at 2020-07-30

Laravelのルートパラメータは「必須」と「任意」を覚える

必須パラメータ

Laravelのルート定義をする際に、ルートパラメータの設定をする場合があります。
例えば、URLからユーザーIDや記事IDを取り出したい場合、取り出したいURLの部分を{}括弧で囲むことで、その囲まれた部分のパラメーターをコントローラーへ送ることができます。
とまあ、文章で書いてもよくわからないので例文を下記に記述します。

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

上記の例では、URIが「user/○○」だとした場合にマッチングするルート定義になっています。ルートパラメーターの定義は{id}として記述されていますね。
この場合、{id}にあたる部分である「○○」が$idに格納されます。
なので、上記例の場合、最終的には「User ○○」が出力されます。

ちなみに、上記の例は「必須パラメータ」と呼ばれ、もし{id}の部分がURIに含まれないケースでは、このルート定義にあてはまりません。

任意パラメータ

パラメータを指定しても、しなくてもOK!というような、任意でパラメータを入力したいということもあります。
その場合は、パラメータ名の最後に?マークを付けると任意指定可能なパラーメータになります。便利!
こちらも例を見てみましょう。

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

Route::get('article/{name?}', function ($name = 'study') {
    return $name;
});

こんな感じで、{name?}のところはURIであってもなくても良いという感じです。
例えば、「user/masahiro」というURIでアクセスした際は「masahiro」と出力されますし、
「article」だけでアクセスした場合は、デフォルト値が適応されて「study」が出力されます。

パラメータの数は自由に書ける

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    // 
});

上記のように、必要に応じて{}を使用することでパラーメータの定義可能です。
{post}は\$postIdに対応していて、{comment}は\$commentIdに対応していますね。

参考文献
https://readouble.com/laravel/7.x/ja/routing.html

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