本記事では、
Laravelの、Controllerの作成方法から、基本的な使用方法までを解説する。
まずは大まかに、
Laravelの、Controllerの作成方法〜使用方法までを紹介する。
- コマンドでコントローラを作成する(php artisan make:controller 〇〇Controller)
- 「app→Http→Controllers」内にコントローラが作成される
- ファンクションを記述していく
では注意点なども含め、詳細に説明していく。
laravel のコントローラとは?(読み飛ばしOK)
まずは、laravelのコントローラが何かよく理解していない人のために、
laravelのコントローラとは?と言うことを明確にしておく。
laravelのコントローラとは、簡単に言うと、
ブラウザからのリクエストを受け取って、リクエストに応じたを処理を実行する機能のことだ。
ブラウザからのリクエストを受け取って、リクエストに応じたを処理を実行する機能のこと
laravelにおいて、
コントローラはロジックを一番多く記載する箇所なので、
プログラム上一番重要な役目をになっている機能と言っても過言ではない。

viewとかmodelはcontrollerから呼ばれるものなので、なくてもなんとかなるが、
controllerは、アプリの始まりなので、laravelにおいて必須のプログラムとなっている。
Laravelでのコントローラの作り方
では、本題。
Laravelでのコントローラの作り方について解説していく。
laravelコントローラはコマンドで作成
laravelのコントローラは、laravelではおなじみの
artisanコマンドでコントローラを作成できる。
# laravelのコントローラを作成
php artisan make:controller 〇〇Controller
「php artisan make:controller」までが「コントローラを作って!」という命令で、
「〇〇Controller」がコントローラ名となっている。
例えば
「php artisan make:controller CharcterController」と言った具合に作成する。
laravelコントローラの命名規則
laravelコントローラの命名規則としては、
上記コントローラの作成手順で、〇〇とした部分にアプリ名を入れると言う規則がある。
[box class=”green_box” title=”laravelコントローラの命名規則”]
コントローラの作成時、〇〇Contorollerとするところの〇〇に、アプリ名を入れる、。
[/box]
※これはlaravelのコントローラの命名時に、通常そうするってだけで、別に違っても構わない。
laravelコントローラのできる場所
laravelのコントローラは、コマンドで作成した後は、
「app→Http→Controllers」内に出来上がる

laravel コントローラの使用方法
laravelコントローラの作成に関しては以上なので、
次にlaravelのコントローラの使用方法について簡単に説明していく。
laravelコントローラを記述していく
作ったコントローラファイルの中にfunctionを書いていく
public function index($hoge=‘ほげげ’, $fuga=‘ふがが’’) {
…処理...
}
ファンクションは何個でも記述できる。どのファンクションを呼ぶかはルーティングで指定する。
ルーティングからコントローラを呼び出す。
コントローラに記述した内容は、ルーティングから呼び出される。
ルーティングのファイルは「Routes→web.php」。
laravelのルーティングに関しては、以下の記事で詳細をまとめているので、laravelのルーティングについて理解していない人は参考にして欲しい。
ルーティングからコントローラを呼びだす方法
web.phpにて
Routes::getまたはpost(‘パス’ , ‘コントローラ名@ファンクション名’);
以下はFooControllerのindexファンクションを、getで呼び出す例
Route::get(‘hello/{hope?}/{fuga?}/‘ , ‘FooController@index’);
注意したいのは、パラメータの渡し方。
上記だと、パスに指定した{hoge}と{fuga}がパラメータとしてindexファンクションに渡される。
受け取る側の「‘FooController@index’」という記述の方には何も書かなくて大丈夫だ。
コントローラに記載するfunction側で受け取る引数だけを記述しておけばOK。
ルーティングでコントローラを呼ぶときの注意点
基本的にはurlと、紐づけるプログラムは同じ構造にする。
例えば
Route::get(‘hello/hoge’ , ‘HelloController@hoge’);
というふうにする。
上記なら,「hello/hoge」にアクセスしたら、Helloコントローラにあるhogeファンクションなんだなっていうのが想像つく
つまりアクセスするパスで、呼び出されるコントローラと、対応するファンクションが予測できるような構造にする、ということが大事だ。
これもこうじゃなきゃいけない!っても
関連
https://readouble.com/laravel/8.x/ja/controllers.html
https://qiita.com/yukibe/items/7bab0d596ae9a0930f18