コントローラーは、先に学習したルーティングで割り振った処理を具体的に実装する機能です。コントローラは、MVCというLaravelやいろいろなフレームワークで使用されているアーキテクチャーです。※MVC(Model-View-Controller)の略
MVCとは?
モデル(Model) | 主にデータベースアクセスに関する処理全般を扱う。 |
ビュー(View) | 画面表示を扱う。テンプレートなど |
コントローラー(Controller) | 全体の制御をする。必要に応じてModelを使ってデータベースに アクセスしたり、Viewを使って画面を表示させたりしている。 |
コントローラは、プログラム本体みたいなものです。ModelやViewは、なくても、不要であれば最悪なくてもいいですが、コントローラーはルーティング情報で呼び出されるプログラムそのものなので
ないと成立しません。Laravelは、まずコントローラーを作るところから始まります。
コントローラーを作成
コントローラの作成は、ファイルを新規作成してもよいですが、今回はartisan(アーティザン)コマンドを使用して作成します。ちなみにartisanは[職人]という意味らしいです。laravelを作成したプロジェクトフォルダで以下のコマンドを実行します。
php artisan make:contoroller コントローラー名
以下のような画面がでればOKです。
Laravelプロジェクトフォルダ内にある[app]→[http]→[Controller]というフォルダの中に先ほど作成した[HelloController.php]が存在しています。この中身を見ると自動で基本コードが書かれています。
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request; class HelloController extends Controller
{
//
}
説明
- <?php ・・・ これから先は,php言語で記載しているという意味
- namespace App\Http\Controllers; ・・・名前空間でプロジェクトフォルダを起点としたパス
- use Illuminate\Http\Request; ・・・ クラスのインポート。Requestは頻繁に使うのでデフォルトでuseで追加されている。
- class HelloController extends Controller ・・・ コントローラークラスは、ExtendsでControllerクラスを継承している。{}で囲まれた部分に具体的な処理を追加する。
- web.phpにアクションにルートを割り当てる設定を行うと表示される。
Route::get('hello',コントローラー名@アクション名(完全な名前空間)');
例) Route::get('hello','App\Http\Controllers\HelloController@index');
※Laravel8からは、完全な名前空間(ここでは‘App\Http\Controllers\HelloController@index’)で使用しないとエラーになります。
詳しくは以下の記事にも記載しています。

Laravel8でTarget class [xxxController] does not exist.エラー
Laravel8ではweb.phpに完全な名前空間で記載する必要がある。また、以前のバージョンと同様にコントローラー名@アクション名だけで表示できるようにしたい場合は、app\Providers\RouteServiceProvider.phpに1行追加する必要がある。
コメント