こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 PHPのフレームワークの1つであるLaravelでコントローラーへのルーティングを設定するやり方を丁寧に説明していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Laravelのバージョン | 8.10.0 |
この記事では
C:\Laravel\LaravelSample
配下にLaravelのプロジェクトを作成しています。
コントローラーへのルーティングを設定のサンプルプログラムの概要
コントローラーへのルーティングを設定するサンプルプログラムでは
- コントローラー
- Bladeビュー
- web.php
の3種類のファイルを新規作成、または修正します。
指定したURLにアクセスした場合、コントローラーを呼び出し、Bladeビューを表示させます。
Bladeビューについては、こちらの記事をご参考ください。
コントローラーへのルーティングの設定の仕方を解説
コントローラーへのルーティングの設定の仕方を解説します。
- コントローラーを新規作成
- Bladeビューを新規作成
- web.phpにルーティングを追加
という順序で解説を進めます。
コントローラーを新規作成
コントローラーを新規作成します。
コマンドは
1 |
php artisan make:controller 【作成するコントローラーの名前】 |
で新規作成します。
コマンドを使ってコントローラーの新規作成する詳細な説明は、こちらの記事をご参考ください。
LaravelSample\app\Http\Controllers配下に【SampleController.php】というコントローラーを新規作成しました。
新規作成されたコントローラーの中身は↓のようになっています。
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class SampleController extends Controller { // } |
ここにsampleページに飛ぶようにshowPageメソッドを新規に作成し、↓のように記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class SampleController extends Controller { public function showPage(){ return view('sample'); } } |
上記の
1 |
return view('sample'); |
とviewメソッドで指定してあげると、resources\views配下にある【sample.blade.php】を表示します。
Bladeビューを新規作成
Bladeビューを新規作成します。
Bladeビューはコマンドで新規作成できないので、自分でファイルを新規作成します。
新規作成するときの注意するべきポイントについては、こちらの記事をご参考ください。
resources\views配下に【sample.blade.php】を新規作成しました。
中身は↓のように記載しています。
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <h1>サンプルページ</h1> <p>おはようございます</p> </body> </html> |
【sample.blade.php】は、単純にHTMLで表示するだけのページとします。
web.phpにルーティングを追加
web.phpにルーティングを追加します。
web.phpとは、ブラウザからリクエストされたURLに対してルーティングを定義することができるファイルです。
詳しくはこちらの記事をご参考ください。
web.phpは、routes直下に格納されています。
インストールした直後の中身は↓のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); |
ここに【http://〇〇.〇〇.〇〇:8000/sample】にアクセスした場合、SampleControllerのshowPageメソッドを呼び出すように設定を追加します。
↓のように追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SampleController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::get('/sample', [SampleController::class, 'showPage']); |
追加した箇所は2つです。
1つ目は4行目に
1 |
use App\Http\Controllers\SampleController; |
を追加しました。
2つ目は21行目に
1 |
Route::get('/sample', [SampleController::class, 'showPage']); |
追加しました。
↑の意味としては
です。
この書き方はLaravelのバージョン8からの新しい書き方です。
バージョン7までだと
1 |
Route::get('/sample', 'SampleController@showPage'); |
という書き方になります。
もしバージョンが8なのに7の書き方をした場合
1 |
Target class [SampleController] does not exist. |
というエラーが発生してしまいます。
エラーについては、こちらの記事をご参考ください。
以上で、コントローラーへのルーティングの設定が完了しました!
実行して確認
本当に設定できたのかを実行して確認します。
Laravelでサーバーを立ち上げるコマンドは
1 |
php artisan serve |
です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。
- http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/sample
※コマンドプロンプトに記載されているURL - http://localhost:8000/sample
どちらかのURLにアクセスすれば、新規作成したBladeビューが表示されることが確認できます!
まとめ:Laravelでコントローラーへのルーティングを設定してみよう
以上がLaravelでコントローラーへのルーティングを設定の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント
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では正しかったものがエラーとなってしまいます。
なのでルーティングの書き方で差分が発生しています。
記事にエラーの内容も追記したので、ご参考ください。