このような悩みがある方に向けた記事となっています。
こんにちは、セイタです。
Laravelのコントローラですが、最も簡単な考え方としては、『Laravelの中で行う処理の命令塔』というイメージを持つとわかりやすいと思います。
作成したコントローラの中身を見てみると、PHPのクラスと同じような形式でクラスが作成されているので、その中に関数を書き入れてLaravelで行う処理を書いていくイメージです。
関数の集合体と考えてもいいかもしれませんね。
コントローラは複数作成して、さらに複数処理を分岐させることができるので、処理ごとにわかりやすくコントローラを作成するのが良いでしょう。
本記事では、初心者向けの内容となっているので、ブラウザに任意のBladeをViewで表示させるという簡単な処理を例に解説してみようと思います。
【Laravel】コントローラの使い方と考え方について【初心者向け】
コントローラは処理の命令塔。
Laravel上での命令の中枢といっても良いでしょう。
ここでの記述が間違っていると、Viewで指定したBladeファイルが表示されなくなったりするので、しっかりと理解して自在に表示できるようにまずは慣れておきましょう。
Bladeの扱い方については、【Laravel】Bladeのテンプレートの使い方と考え方【初心者向け】にて解説しているので、不安な人はあわせてご覧ください。
Laravelのコントローラの考え方について
今回、例として解説する『任意のBladeファイルをViewで表示させる処理』だけではなく、他にも変数を指定したり、配列を抽出したりといったこともできるのですが、最初に全て理解しようとすると混乱してしまうと思います。
そのため、Bladeファイルの表示方法→開発に必要な配列の抽出方法といったような順番で、順を追って理解していくのがベストです。
コントローラの使い方
コントローラを使うためには、Macの人はTerminalで、Windowsの人はShellでコントローラを作成する必要があります。
今回はTerminalを例に挙げますが、コマンド自体は同じなのでWindowsの人も同じ手順で作成することが可能となっているので、ご安心ください。
ローカル開発環境を整えよう
開発環境
ローカル開発環境の構築に関しては、ドットインストールの講座を見ていただければそっくりそのまま僕の環境と同じ環境になるので、こちらの講座を参考にローカル開発環境を整えてみてください。
もし他の開発環境を使用しているという場合は、この部分は飛ばしてもらってもOKです。
ただ、ドットインストールで学習する際にはこちらのローカル開発環境で統一されているようなので、今回を機会に環境を移した方が後々便利ではないかなと思います。
コントローラをterminalで作成する
コントローラの作成コマンド
php artisan make:controller StartController
Terminalもしくは、Shellでこちらのコマンドを打ち込むことによって、コントローラを作成することができます。
今回は『StartController』という名称にしましたが、ここはわかりやすい名前で大丈夫です。
ただ、後半の『◯◯Controller』の部分は共通になるので、◯◯の部分のみわかりやすい名称にするようにして下さい。
作成されたクラスの中にそれぞれの処理を記述する
コントローラの作成されるディレクトリ
App→Http→Controller
StartControllerの中身
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class StartController extends Controller { // }
作成されたコントローラの中身を確認してみると、このようなコードが記述されたファイルが作成されています。
実際にコードを記述する場所としては、『//』の後に記述していきます。
実際に、viewを使ってブラウザで表示を確認する場合は、こちらのように記述することでブラウザでblade.phpファイルを確認することが可能です。
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class MainController extends Controller { // public function index() { return view('index'); } }
public function index()という関数を作成して、中身の処理に関してはreturnを使用してview('index')と記述します。
こうすることによって、ルーティングでindexをルート指定するとブラウザで確認できるという仕組みです。
view('値')に関しては、Bladeテンプレートで作成したindex.blade.phpというファイルのBladeより前の部分の名称を記述するだけでOKです。
コントローラとルーティングはワンセット
さて、コントローラの作成とブラウザで表示するための準備に関しては、理解できたと思います。
ただ、これだけではブラウザを確認してもページがエラーになってしまうので、ルーティングという記述をしなければいけません。
ルーティングの簡単な解説
ルーティングは、指定したアドレスに対して、コントローラからどんな処理を渡すかという集積所的な役割を持っていて、ルーティングを指定するファイルはこちらのディレクトリの中のweb.phpを開いて編集します。
config→web.php
ファイルを開くと、最初のwelcome.blade.phpを指定しているルーティングが記述されているかと思います。
その部分を下記のように、修正してみてください。
Route::get('/', 'StartController@index');
このように記述して、ページのホームとなるルートにアクセスすると、index.blade.phpの内容が表示されると思います。
簡単に理解するために、ブラウザでblade.phpを表示させるためには...
- Route::getを使用する
- 第一引数にアドレスを入力する
- 第二引数にviewで指定したindex.blade.phpを表示させる記述をしたコントローラを記述する
- コントローラの後には、StartControllerのindex()のように関数名の()なしの名称を記述する
- Route::get('②','③@④')のような形になり完成!
これはもう形で覚えてしまった方が最初は早いので、こういうものだと理解するのが手っ取り早いですね!
初学中はシンプルな記述でOK
他にもルーティングの書き方でpostを使用する書き方など、色々あるのですが、他の部分に関しては処理が必要になった場合に覚えていけばより、頭の中に定着しやすくなるはずなので、全て一気に覚える必要はありません。
まずは、viewで指定したbladeファイルをブラウザで表示するためにはRoute::getなんだな、という感じで覚えて繰り返し書いていって、一つ一つ定着させていくのがベストでしょう。
コントローラとの関連性について
再確認も含めて、コントローラとルーティングの関係性についておさらいしておきましょう。
- コントローラ:関数の集合体。ルーティングでコントローラを指定して関数名を書くと、指定したパスに対してコントローラに書いた内容の処理が反映される。
- ルーティング:指定したパスに対して、コントローラに記述した関数を割り当てる役割。ブラウザでbladeファイルを表示させる以外にも多数の処理あり。
ルーティングを設定するには、コントローラに関数の記述を。
コントローラに関数の記述をしたら、ルーティングにもコントローラに書いた関数の処理を渡す記述を。
このように相互関係にあると考えると理解しやすいと思うので、混乱しないように注意してくださいね!
コントローラはLaravel上の処理命令の要
今回はコントローラについての解説をしてみました。
もうプログラミングには慣れっこと言う人は、こちらの記事をみていないかと思いますが、初学者向けの内容だったと思います。
僕も学習中で全てを理解できているわけではありません(多分、Laravelというフレームワークを『理解』するのには年単位だと予想)。
ですが、初めて学習する人に向けてわかりやすい解釈をお伝えすることはできると思っているので、今後もこのような記事を増やしていきたいと思います。
新しい知識を取り入れるのは結構大変ですが、自分なりの解釈ができるようになると一気に理解が深まるので、諦めずに取り掛かっていきましょうね!
オススメのLaravel学習本