【Laravel】コントローラ(Controller)の使い方と意味について



1. コントローラとは?
コントローラは、ユーザーのリクエストを受け取り、そのリクエストに応じて適切な処理を行う役割を持つクラスです。Laravelでは「Model-View-Controller (MVC)」アーキテクチャに基づいており、コントローラはその「C」に該当します。
1.1. 簡単な例
- ユーザーがWebサイトで「商品一覧」を見たい。
- コントローラがそのリクエストを受け取り、データベースから商品情報を取得。
- ビューを使って、商品一覧をWebページとして表示。
本記事では、Laravel10を利用して、Controllerの使い方についてわかりやすく解説します。
2. コントローラを作成する方法
Laravelでは、artisanコマンドを使用して簡単にコントローラを作成できます。
2.1. コマンド
php artisan make:controller SampleController
上記のコマンドを実行すると、app/Http/Controllers
ディレクトリにSampleController.php
というファイルが生成されます。


2.2. コントローラの基本構造
以下は、生成されたコントローラの基本的な構造です。ここにindexメソッドを追加しました。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller
{
// メソッドの例
public function index()
{
return "Hello, Laravel Controller!";
}
}
3. ルーティングとコントローラの関連付け
作成したコントローラを利用するには、ルートで設定を行う必要があります。
3.1. ルート設定
routes/web.php
に以下を追加します。
use App\Http\Controllers\SampleController;
Route::get('/sample', [SampleController::class, 'index']);
3.2. 各部分
Route::get
- HTTPのGETリクエストを処理します。たとえば、ユーザーがブラウザで
/sample
にアクセスしたときにこのルートが動作します。
- HTTPのGETリクエストを処理します。たとえば、ユーザーがブラウザで
SampleController::class
- 作成したコントローラを指定します。この例では
SampleController
が使用されています。
- 作成したコントローラを指定します。この例では
index
- 指定したコントローラ内で実行するメソッド名です。この例では、
SampleController
のindex
メソッドが呼び出されます。
- 指定したコントローラ内で実行するメソッド名です。この例では、
4. リクエストデータを受け取る
コントローラでは、ユーザーから送信されたデータを処理することができます。以下にフォームから送信されたデータを受け取る方法を紹介します。


store
メソッドでリクエストを受け取る。4.1. フォームの例
ビューを利用して、フォームを作成します。次のように、resources/views/index.blade.php
を作成します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="{{route('sample.post')}}" method="POST">
@csrf
<input type="text" name="name" placeholder="名前を入力">
<button type="submit">送信</button>
</form>
</body>
</html>
4.2. リクエストデータの受け取り
コントローラを利用して、フォームから送信されたデータを取得して表示します。
public function index() {
return view("index");
}
public function store(Request $request)
{
$name = $request->input('name');
return "Hello, " . $name;
}
先ほど作成した、SampleControllerにstoreメソッドを追加して、indexメソッドで先ほど作成したビューを表示できるように編集します。
4.3. web.phpの編集
storeメソッドに対応したルートを名前付きで追加します。
Route::post('/sample', [SampleController::class, 'store'])->name("sample.post");
4.4. 動作確認
先ほど作成したビューのページに移動します。ここで、名前を入力して、送信ボタンを押します。
送信ボタンを押すと、次のように表示されます。