LaravelのController(コントローラの役割と基本の使い方) – 5/12

前回は 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の書き方
  • レイアウト
  • コンポーネント

など、画面表示の仕組みを詳しく説明します。

コメント

タイトルとURLをコピーしました