前々回の記事から「Laravel」について学習を始めたプログラミング初心者である私が、
ゆっくりではありますが、その学習記録をブログ記事として残させて頂いております。
同じような境遇の方の参考になったり、また「Laravel」を含めたプログラミング言語を学ぶきっかけになったりすれば良いなと思っております。
*WindowsとMacで多少処理が異なる部分があるかもしれません・・・。
本記事はWindowsを想定。Macの方で詰まったら、ググって調べてみてください。
(ローカル環境は開発済みとする。テキストエディタはVSCodeを用いる)
前置きが長くなりましたが、それでは下記からの本文をどうぞ!
そもそも〔ルーティング〕とは?
前回立ち上げたLaravelプロジェクトをを少しずつ進めていきます。
Laravel初心者まとめ記事②〔Laravelプロジェクトの作成と設定〕
LaravelはMVCモデルと学びました。
今後、それぞれモデル(M)・ビュー(V)・コントローラー(C)部分について学んでいくのですが、
もう1つ〔ルーティング〕と言う概念があります。
ルーティング部分では、「ブラウザから特定のアドレスにアクセスした際の(主にコントローラーでの)挙動を設定」します。
実際に書いてみた方が早いと思うので、コードを書いて、ブラウザに表示させてみましょう。
前回「laravel-test」と言う名のlaravelプロジェクトを立ち上げました。
Laravel初心者まとめ記事②〔Laravelプロジェクトの作成と設定〕
左側にプロジェクト内の各ファイル・フォルダが表示がされていると思いますが、
ルーティング部分は「routes」フォルダ内の「web.php」に記述していきます。
線で囲った部分です。
中央には「web.php」のコードが予め記載されています。
まず3行目に use Illuminate~Route; との記載があります。
この記述を〔use宣言〕と言います。
「illuminate」のフォルダの「Support」の中の「Facades」から【Route】と言うクラスを使いますよ(use)!と言う宣言をします。
事前に宣言をすることで、このファイルの中では【Route】と記述をするだけで〔Routeクラス〕を簡単に呼び出す事が出来るのです。
実際に16行目でRouteクラスを呼び出してますね!
*ちなみに「Facades」はファサードと読みます。
ファサードについては下記で説明
use宣言の下のコメントアウト部分(緑文字部分)は、「web.php」ファイルの説明文だと思われます。
(英語疎くてすいません!)
ここで、アプリケーションの Web ルートを登録できます。これら ルートは RouteServiceProvider によってロードされ、すべてのルートがロードされます。 「Web」ミドルウェア グループに割り当てられます。素晴らしいものを作りましょう!
↑Google翻訳さんより
16~18行目が実際のルーティング記述部分になりますので、見ていきましょう。
ルーティング文を記述して、ブラウザに表示させてみよう
関数を使ったルーティングの記述
Laravelのルーティングの記載方法は2つあります。
1つ目は、関数を使って記述する方法で、デフォルトでもその記述方法が使われいます。
Route::get('/', function () {
return view('welcome');
});
まず、先にuseで宣言したRouteクラスを呼び出してます。
ただし「クラス」と言うのは単なる設計図なので、実際にクラス内のメソッド(関数)を使用する際はインスタンス化する必要があり、
〔new クラス名〕と記述してインスタンス化してから、-> でメソッドを呼び出す必要があります。
↓こんな感じです。
$class = new Class();
$class -> method();
【バックエンド初心者がまとめるPHP学習日記⑧】クラスと言う概念を理解しよう!その①
クラス、オブジェクト指向については上の記事でまとめてます。
ただし、Laravelプロジェクトにおいては既に立ち上げた際に、Routeクラスはファサードに登録されています。
ファサードとは、インスタンス化しなくてもメソッドが使用できるようになる機能の1つと考えてください。
ですので、わざわざ new でインスタンス化しなくても、〔Route::〕と記述することでRouteクラスのメソッドを使用することが出来ます。
*「:」(コロン)2つ書くことがファサードの記述方法になります。
コロンに続いてメソッド名を記述してきます。
Route:: に続いて〔HTTPリクエストメソッド〕を書いていきます。
HTMLでformタグを記述する際にmethod属性に「get」や「post」を指定したと思いますが、
あのイメージのようにファサードで「get」や「post」を記述します。
*なお、Lalavelではほかにも「delete」などのHTTPリクエストメソッドが使えます。
① get() : 「このページの情報が欲しい」と言うリクエスト
② post() :「このテータを送ります。なので受け取ってください」と言うリクエスト
デフォルトでは「URLにアクセスした時に、特定の画面を表示する」と言う処理を書いてますので、
送る「post()」ではなく、貰う「get()」をRoute::に続けて記述しております。
HTTPリクエストメソッドの()内には、URLとfunction()を記載していきます。
Route::get('URL', function() {
URLにアクセスした際の処理内容
});
なおURLに関しては「https://ドメイン名」の部分を省略します。
デフォルトではルートURLにアクセスした際の処理をしているので、「’/’」のみの記述でOKです。
その後の、function()に続く {} 内に処理内容を書いていきます。
view(‘welcome’)と言う記述をreturnで返していますが、
ここでのviewは「viewヘルパ関数」と呼ばれるもので()内のファイルを表示する関数です。
今回は「welcome.blade.php」を表示させて、returnで返しています。
*「.blade.php」部分は省略します。
実際に表示させてみる
それでは実際にルートURLにアクセスしてみます。
Route::get('/', function () {
return view('welcome');
});
「’/’」=ルートURLにアクセスすると、「welcome.blade.php」と言うファイルを表示させる
と言う記述になります。
なお、「welcome.blade.php」ファイル自体はresourcesのviewsフォルダにありますにで、気になる方はチェックしてみてください。
localhost/laravel-test/public/
この画面が無事に表示されていれば、上手くルーティングできてます。
デフォルトからルーティングを設定し直してみる
上手く、上記を表示させることが出来ましたら、実際にデフォルトの記述を書き換えてみましょう。
localhost/laravel-test/public/○○○
と言うURLにアクセスした時に、何か文字を返してみましょう。
Route::get('test', function(){
return 'test message';
});
localhost/laravel-test/public/test
上記のURLにアクセスした際に、「’test message’」と言う文字列を返す記述になります。
実際にアクセスすると、上画像のように上手く表示されているかな?と思います。
このように、簡単な文字列などは関数を使ってルーティングを記述します。
関数を使わないルーティングの記述(こちらがメイン)
詳細は次の記事でMVCモデルの〔コントローラー〕についてまとめたいと思ってるので、
そちらの記事で詳しく説明したいと思いますが、先ほどの単に文字列を返すような処理であれば、
関数を用いて直接「web.php」ファイル内に書く場合もあります。
ただし、基本は1つのアプリとして複雑な処理になってくるので、下記のようにコントローラーを経由するような書き方をします。
Route:: HTTPリクエストメソッド(’URL’, [ コントローラー名::class, ‘アクション名’ ]);
URLの部分までは同じですが、直接処理をfunction内に記載せずに、コントローラーを経由して処理する記述方法です。
コントローラー名やアクション名 など新しい単語が登場しております。
次の記事でコントローラーをまとめながら、ルーティングについても再復習したいと思うので、
一先ずは「ルーティングは2つの書き方で設定できます!」でまとめさせて頂きます。
まとめ
ルーティングの設定方法について簡単にまとめてみました。
次回はコントローラーについてまとめたいと思っているので、その際にルーティングも合わせて復習したいと考えてます。
それでは!
コメント