基本的なコントローラーの作成と使用
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
コメント