【Laravel】コントローラーへのルーティングの設定の仕方を解説します

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。

この記事では、 PHPのフレームワークの1つであるLaravelコントローラーへのルーティングを設定するやり方を丁寧に説明していきます。

前提条件:実行環境について

実行環境は以下の通りです。

OS Windows10
Laravelのバージョン 8.10.0

この記事では

C:\Laravel\LaravelSample

配下にLaravelのプロジェクトを作成しています。

コントローラーへのルーティングを設定のサンプルプログラムの概要

コントローラーへのルーティングを設定するサンプルプログラムでは

  • コントローラー
  • Bladeビュー
  • web.php

の3種類のファイルを新規作成、または修正します。

指定したURLにアクセスした場合、コントローラーを呼び出し、Bladeビューを表示させます。
Bladeビューについては、こちらの記事をご参考ください。

コントローラーへのルーティングの設定の仕方を解説

コントローラーへのルーティングの設定の仕方を解説します。

  1. コントローラーを新規作成
  2. Bladeビューを新規作成
  3. web.phpにルーティングを追加

という順序で解説を進めます。

コントローラーを新規作成

コントローラーを新規作成します。
コマンドは

で新規作成します。
コマンドを使ってコントローラーの新規作成する詳細な説明は、こちらの記事をご参考ください。

LaravelSample\app\Http\Controllers配下に【SampleController.php】というコントローラーを新規作成しました。

新規作成されたコントローラーの中身は↓のようになっています。

ここにsampleページに飛ぶようにshowPageメソッドを新規に作成し、↓のように記載します。

上記の

とviewメソッドで指定してあげると、resources\views配下にある【sample.blade.php】を表示します。

Bladeビューを新規作成

Bladeビューを新規作成します。
Bladeビューはコマンドで新規作成できないので、自分でファイルを新規作成します。
新規作成するときの注意するべきポイントについては、こちらの記事をご参考ください。

resources\views配下に【sample.blade.php】を新規作成しました。

中身は↓のように記載しています。

【sample.blade.php】は、単純にHTMLで表示するだけのページとします。

web.phpにルーティングを追加

web.phpにルーティングを追加します。
web.phpとは、ブラウザからリクエストされたURLに対してルーティングを定義することができるファイルです。
詳しくはこちらの記事をご参考ください。

web.phpは、routes直下に格納されています。

インストールした直後の中身は↓のようになっています。

ここに【http://〇〇.〇〇.〇〇:8000/sample】にアクセスした場合、SampleControllerのshowPageメソッドを呼び出すように設定を追加します。
↓のように追加します。

追加した箇所は2つです。
1つ目は4行目に

を追加しました。

2つ目は21行目に

追加しました。
↑の意味としては

です。

この書き方はLaravelのバージョン8からの新しい書き方です。
バージョン7までだと

という書き方になります。
もしバージョンが8なのに7の書き方をした場合

というエラーが発生してしまいます。
エラーについては、こちらの記事をご参考ください。

以上で、コントローラーへのルーティングの設定が完了しました!

実行して確認

本当に設定できたのかを実行して確認します。
Laravelでサーバーを立ち上げるコマンドは

です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。

  • http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/sample
    ※コマンドプロンプトに記載されているURL
  • http://localhost:8000/sample

どちらかのURLにアクセスすれば、新規作成したBladeビューが表示されることが確認できます!

まとめ:Laravelでコントローラーへのルーティングを設定してみよう

以上がLaravelでコントローラーへのルーティングを設定の解説でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

  1. とくめい より:

    Laravel初学者です。
    Web.phpの21行目に追加した
    Route::get(‘/sample’, [SampleController::class, ‘showPage’]);
    についてです。

    以前、
    Route::get(‘/sample’, [SampleController@’showPage’]);
    の形でメソッドの呼び出しを学んだのですがこれらにはどのような差分があるのでしょうか?

    • たいら より:

      とくめいさんへ

      コメントありがとうございます。
      ご質問の差分ですが、Laravelのバージョンの違いです。

      コメントでお書きになっている以前学ばれた書き方というは細かいですが
      Route::get('/sample', 'SampleController@showPage');
      という書き方が正しいです。
      Laravelのバージョンが7まででしたら上記の書き方が正しかったです。
      ですが、バージョン8でルーティングで変更があり7では正しかったものがエラーとなってしまいます。
      なのでルーティングの書き方で差分が発生しています。
      記事にエラーの内容も追記したので、ご参考ください。

タイトルとURLをコピーしました