Laravelのルーティング入門 [web.php][Route]

2019年9月25日

PHP

Laravelのルーティングの概要を説明します。

 

バージョンの確認。

 

プロジェクトを作成します。

 

生成されたプロジェクトのディレクトリ内に移動します。

 

ディレクトリの確認。

 

routesディレクトリ内には4つのファイルがありますが、Webページを表示しルーティングする場合はweb.phpを利用します。本記事ではこのweb.phpについて説明します。

 

まずプロジェクト作成後のデフォルトの状態を確認してみます。

 

routes/web.php

これはGETメソッドによって / にアクセスすると、resources/views内のBladeテンプレートであるwelcome.blade.phpが表示するように記述されています。view()の引数にはwelcome.blade.phpのwelcomeのみを記述します。GETメソッドの他にも、もちろんpost/put/delete等が利用できます。

 

仮にこのweb.phpに下記コードを追記し、更にresources/views内にabout.blade.phpを作成してみます。

routes/web.php

 

resources/views/about.blade.php

/about にアクセスすると、画面に「aboutページ」と表示されるのが確認できます。

 

 

コントローラによるルーティング


 

上記では任意のURLにアクセスした場合、view()によって直接ページを表示させました。次はコントローラを利用したルーティングについて説明します。

 

まずweb.phpに下記コードを追記します。

routes/web.php

/userにアクセスすると、UserControllerコントローラのindexアクションが実行されるように指定しています。

 

次に下記コマンドでコントローラを作成します。app/Http/Controllers内に「UserController.php」ファイルが作成されるのが確認できます。

 

app/Http/Controllers/UserController.php を確認し、下記の様にindexという名前のアクション(関数)を追記します。

/user にアクセスすると、画面に「index」と表示されるのが確認できます。

 

URLにパラメータを付与するパターンです。web.phpに下記コードを追記します。

routes/web.php

「->where(‘id’, ‘[0-9]+’)」は正規表現による制約を設定しています。

 

app/Http/Controllers/UserController.php にアクションを追記します。

user/3 にアクセスすると、画面に「3」と表示されることが確認できます。数値以外を指定すると404エラーとなります。

 

 

リソースコントローラ


 

もし–resourceを付けてコントローラを作成した場合、RESTfulを想定したアクション(関数)が自動で用意されます。

記載しませんが、生成されたSampleController.phpに、各アクションである index() / create() / store() / show() / edit() / update() / destroy() があらかじめ記述されているのが確認できます。

 

web.phpに下記コードを追記します。上述してきたようなgetではなくresourceと記述していることに注意して下さい。

routes/web.php

 

app/Http/Controllers/SampleController.php のshowアクションを下記のように編集します。

以上で sample/3 にアクセスすると、画面に「3」と表示されることが確認できます。これは「/sample/○○」にアクセスすると、GETメソッドによってshowアクションが実行されるようになっているからです。つまりURIの形式によってあらかじめ実行されるアクションが決まっています

 

仮に app/Http/Controllers/SampleController.php のcreateアクションを下記のように編集します。

sample/create にアクセスすると、画面に「create」と表示されます。

 

URIとアクションと関係については、Laravel 5.8 コントローラ の「リソースコントローラ」の項目をご参照下さい。

 

 

参照ページ


 

Laravel 5.8 ルーティング

 

Laravel 5.8 コントローラ

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー