Controllers
Controllers group related request handling logic. Generate with php artisan make:controller.
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index(): View
{
$users = User::all();
return view("users.index", compact("users"));
}
public function store(Request $request): RedirectResponse
{
$validated = $request->validate([
"name" => "required|string|max:255",
"email" => "required|email|unique:users",
]);
$user = User::create($validated);
return redirect()->route("users.show", $user);
}
}Dependency Injection
use App\Services\UserService;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function __construct(
private UserService $users,
) {}
public function index(Request $request): View
{
$items = $this->users->paginate($request->get("per_page", 15));
return view("users.index", compact("items"));
}
}Response Types
// View responses
return view("greeting", ["name" => "Alice"]);
// JSON responses
return response()->json(["user" => $user]);
// Redirects
return redirect("/home");
return redirect()->route("profile");
return back()->with("status", "Saved!");
// Download responses
return response()->download($pathToFile);