Laravel逆引きTips – Controller

Laravel Laravel

Laravel逆引きTIps一覧へ戻る

基本的なコントローラーの作成と使用

class UserController extends Controller
{
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}
PHP

リソースコントローラー

CRUDリソース操作に必要な標準的なメソッド(index, create, store, show, edit, update, destroy)を持つコントローラーです。php artisan make:controller PhotoController --resourceコマンドで生成できます。

class PhotoController extends Controller
{
    public function index()
    {
        // 全ての写真を表示
    }

    public function create()
    {
        // 写真作成フォームを表示
    }

    public function store(Request $request)
    {
        // 新しい写真を保存
    }

    // 他のリソースメソッド (show, edit, update, destroy) も同様に実装
}
PHP

コンストラクタインジェクション

コントローラーのコンストラクタで依存性を注入することで、コード全体で使用できるオブジェクトを初期化します。

class ReportController extends Controller
{
    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    // コントローラーメソッド
}
PHP

ミドルウェアの適用

コンストラクタ内でmiddleware()メソッドを使用して、特定のアクションやコントローラー全体にミドルウェアを適用します。

class AdminController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('log')->only('index');
        $this->middleware('subscribed')->except('store');
    }
}
PHP

フォームリクエストの使用

カスタムリクエストクラス(例:StoreUserRequest)を使用して、入力のバリデーションとオーソライゼーションを行います。

class UserController extends Controller
{
    public function store(StoreUserRequest $request)
    {
        // バリデーション済みのリクエストデータを使用
        $validatedData = $request->validated();
        
        // ユーザーを作成...
    }
}
PHP

依存性の注入

メソッドの引数でタイプヒントを使用することで、Laravelの自動依存性注入システムを活用できます。

class UserController extends Controller
{
    public function show(Request $request, $id, User $user)
    {
        $user = $user->findOrFail($id);
        return view('user.profile', ['user' => $user]);
    }
}
PHP

Laravel逆引きTIps一覧へ戻る

著者

Webエンジニア歴30年、フリーランスバックエンドエンジニア。

PHP歴約30年(Laravel 7年・FuelPHP 5年・CakePHP・自作FW)、
JavaScript歴約20年(React・Vue各4年)。
AWS(EC2 / CloudFront / RDS / API Gateway など)・
GCP(BigQuery)を使ったバックエンド開発を中心に、
複数の事業会社・受託案件でシステム設計から実装・運用まで担当しています。

PHPがバージョン4の時代から書いており、
Laravelが普及する前のフレームワーク乱立期も経験しています。
「昔はこう書いていたが今はこう」という変遷を肌で知っているエンジニアとして、
単なるコマンドの使い方だけでなく、なぜそうするのかの背景まで伝えることを意識して書いています。

このブログでは、実務で実際に詰まった箇所・調べたこと・気づいたことを
そのまま記事にしています。誰かの「詰まり」が解決するきっかけになれば幸いです。

千原 耕司をフォローする

役にたったと思ったら応援をお願いします m(._.)m

Laravel
スポンサーリンク
シェアする
千原 耕司をフォローする
タイトルとURLをコピーしました