Laravelのルーティングの書き方とパラメータの使い方
コラムLaravelの勉強を始めて「ルーティング」という言葉が出てくると思いますが
「正直、ルーティングについてよく理解できていない」
「ルーティングの書き方がわからない」
という方に向けて、Laravelの勉強を始めたばかりでもルーティングの基本を理解し、パラメータを使用してルーティングを記述する方法をまとめました。下記の3点について解説します。
- ルーティングの基本について理解する
- ルーティングを記述してアクセスする
- パラメータを受け取って使用する
前回の記事ではLaravelをMacにインストールする方法について解説しました。まだインストールされていない方はPHPフレームワークLaravelをMacにインストールしてブラウザに表示させる方法にて解説しています。
1.ルーティングとは?
特定のアドレスにアクセスしたとき、どの処理を呼び出して実行するかを管理するのが「ルーティング」です。
「https://~/◯◯というアドレスにアクセスしたら□□という処理を呼び出す」というアドレスと処理の紐付けを行っているのが「ルーティング」です。
デフォルトで用意されているトップページのルート情報を見てみましょう。作成したプロジェクトの「routes」フォルダの中にあるweb.phpを開くと下記のコードが記述されています。
この場合、「’/’というアドレスにアクセスしたらfunction内の処理を実行する」となります。
function内の「return view(‘welcome’)」については後で解説しますが、ここでは「トップページをブラウザに表示させている」と思っていてください。
2.「routes」フォルダとは
ルーティングの情報が入っているフォルダが「routes」フォルダです。この中にはいくつかのファイルがありますが、基本的にWebページとして公開するものは全て「web.php」にルート情報を記述します。
3.ルーティングを記述する
3-1.ルート情報(GETアクセス)
Route::get(アドレス , 関数や「コントローラ、コントローラのアクションメソッド」など);
GETアクセスのルート情報は、Routeクラスの「get」というメソッドを使って設定します。第1引数に割り当てるアドレスを、第2引数にアドレスにアクセスした時に呼び出される処理を用意します。第2引数には関数を指定する他に、「コントローラとコントローラのアクションメソッド」と呼ばれるものを指定する場合もあります。
- Routeクラスの「get」というメソッドを使って設定
- 第1引数、割り当てるアドレス
- 第2引数、それによって呼び出される処理(関数を指定する場合と「コントローラとコントローラのアクションメソッド」を指定する場合がある)
gerメソッドでアドレスと処理を割り当てる、ということがルート情報設定の基本になります。
3-2.トップページのルート情報
デフォルトで用意されているトップページのルート情報がどのように設定されているか確認しましょう。
第1引数に’/’というトップページのアドレス、第2引数に関数を指定しています。この関数の中で「return」を使用して戻り値を指定しています。この「return」で返される値が、そのアドレス(今回の場合は’/’)にアクセスした際に送られます。
viewという関数はファイルをロードし、そのファイルをブラウザに表示するという関数です。
この場合は「welcome.blade.php」というファイルを表示しています。
「welcome.blade.php」というファイルは「resources」フォルダの中にある「views」フォルダに用意されています。
3-3.ルート情報を追加する
実際にルート情報を追加します。routesフォルダの中にあるweb.phpを開き、コードを追加します。
http://localhost:8000/sample にアクセスします。
上記のような画面が表示されます。この画面が追加したルート情報によって表示された画面です。
ここでは、第2引数のreturnでHTMLのコードを直接返してWebブラウザに表示されています。
3-4.ヒアドキュメントを使用して表示する
ヒアドキュメントとは、<<<EOF~EOF;の間に書いたコードをひとつにまとめて変数などに代入できます。
web.phpに下記のコードを追加します。
http://localhost:8000/sample にアクセスします。
上記のような画面が表示されます。このように<<<EOF~EOF;の間に書いたコードを「$heredoc」に代入し、returnで「$heredoc」を返してブラウザに表示させることができます。
4.ルートパラメータを使用する
Route::getは、アクセスする時にパラメータを設定し値を直接渡すことができます。第1引数のアドレス部分に{パラメータ}という形で値を用意し、第2引数の関数では、パラメータの値を受け取る変数を引数として用意します。
web.phpに下記のコードを追加します。
http://localhost:8000/sample/HELLO!!にアクセスします
上記のような画面が表示されます。この第1引数{cmt}、第2引数$cmtがパラメータとなります。sample/{cmt}の{cmt}の値が、$cmtに代入され、受け取った値を表示させる事ができます
5.任意パラメータに変更する
先ほど書いたルートパラメータは「必須パラメータ」と呼ばれ、パラメータを設定しないとエラーになります。
先ほどのコードでhttp://localhost:8000/sample/とアクセスするとエラーになります。
第1引数{cmt}、第2引数$cmtが必須パラメータとなっているので、アドレスにパラメータを入力しないとエラーになります。
パラメータを入力しないでもアクセスできる方法が「任意パラメータ」になります。
先ほどのコードのルーティングの引数を下記のように変更します。
- {cmt} → {cmt?}
- ($cmt) → ($cmt = ‘パラメータを受け取っていません!’)
http://localhost:8000/sample/にもう1度アクセスします。
cmtパラメータは、「任意パラメータ」となり、アドレスにパラメータを入力せずにアクセスすると「’パラメータを受け取っていません!’」が表示されます。アドレスにパラメータが入力されている場合は、パラメータの値が引数に代入されます。
まとめ
いかがでしたでしょうか。今回はLaravelのルーティングの基本とパラメータについて解説しました。まとめると下記の3点です。
- ルーティングとは、アドレスと処理の紐付けを行い管理する
- ルート情報の基本は、メソッドでアドレスと処理を割り当てる
- ルートパラメータを使用して、アドレスに値を設定できる
今回は「Route::get」メソッドのみで解説しましたが、他にも「Route::post」や「Route::resouce」などのRouteクラスも存在します。また、同じPHPフレームワークの「CakePHP」でもルーティングを使用していますので、ルーティングの基本をしっかり覚えてLaravel以外のフレームワークでも活かせる知識を身につけましょう
株式会社Knocknote代表取締役。大学卒業後不動産営業に従事した後、ITの重要性を強く感じエンジニアへ転職。ソーシャルゲーム開発、スマホアプリやPepperアプリの企画及び開発、高校でのプログラミング講師などの業務に携わる。2017年1月に創業。現在はプログラミング教育事業、システム開発事業を展開。今後は海外向けの教育事業をさらに拡大させていく事が目標。著書:『作って学べるUnity超入門』(技術評論者)