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一覧へ戻る

コメント

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