前回は Laravelのルーティング(routes/web.php) を解説しました。
ルーティングでは
- URL
- 処理
を結びつけました。
しかし実務では、ルーティング内に処理を直接書くことはほとんどありません。
そこで登場するのが
Controller(コントローラ)
です。
この記事では次の内容を解説します。
- Controllerとは何か
- Controllerの役割
- Controllerの作成方法
- ルーティングとの連携
- 実務での使い方
Controllerとは
Controllerとは
処理をまとめるクラス
です。
役割は次の通りです。
- リクエストを受け取る
- 処理を実行する
- 結果を返す
つまり
URL → Controller → 結果
という流れになります。
なぜControllerが必要か
ルーティングに直接処理を書くこともできます。
Route::get('/users', function () {
return 'Users';
});
しかしこれでは
- コードが増えると管理しづらい
- 処理が分散する
- 再利用できない
という問題があります。
Controllerを使うことで
処理を整理
できます。
Controllerの作成
LaravelではコマンドでControllerを作成できます。
php artisan make:controller UserController
作成場所
app/Http/Controllers/UserController.php
Controllerの基本構造
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
return 'User List';
}
}
メソッドの役割
Controllerでは
メソッドごとに処理を分けます
例
public function index()
{
return '一覧';
}
public function show()
{
return '詳細';
}
ルーティングとの連携
Controllerをルートに紐付けます。
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
意味
/users にアクセス
↓
UserController の index 実行
Viewを返す
ControllerではViewを返すことができます。
public function index()
{
return view('users.index');
}
対応ファイル
resources/views/users/index.blade.php
データを渡す
ControllerからViewへデータを渡せます。
public function index()
{
$name = 'Taro';
return view('users.index', [
'name' => $name
]);
}
Bladeで表示
<h1>{{ $name }}</h1>
Requestの取得
ユーザー入力を取得できます。
use Illuminate\Http\Request;
public function store(Request $request)
{
$name = $request->input('name');
return $name;
}
ルートパラメータ
Route::get('/users/{id}', [UserController::class, 'show']);
Controller
public function show($id)
{
return $id;
}
RESTful Controller
Laravelでは次の構成が一般的です。
| メソッド | 役割 |
|---|---|
| index | 一覧 |
| show | 詳細 |
| create | 作成画面 |
| store | 保存 |
| edit | 編集画面 |
| update | 更新 |
| destroy | 削除 |
resource Controller
まとめて定義できます。
Route::resource('users', UserController::class);
実務でのController設計
実務では次のルールがよく使われます。
1 Controllerは薄くする
Controllerに処理を書きすぎない
Controller = ルーティング担当
2 ビジネスロジックは分離
Serviceクラス
などに分けます。
3 命名ルール
UserController
ProductController
OrderController
よくあるミス
useの書き忘れ
use App\Http\Controllers\UserController;
メソッド名ミス
index → indxe
Viewが存在しない
resources/views/users/index.blade.php
を作る必要があります。
まとめ
この記事では LaravelのController を解説しました。
重要なポイント
- Controllerは処理をまとめるクラス
- ルーティングと連携する
- Viewへデータを渡す
- RESTful設計が基本
Controllerを理解するとLaravel開発が一気に進みます。
次の記事
次回は
LaravelのBladeテンプレート
を解説します。
- Bladeの書き方
- レイアウト
- コンポーネント
など、画面表示の仕組みを詳しく説明します。


コメント