Topics Laravel Basics Controllers & Request Handling
beginner 16 min read

Controllers & Request Handling

Creating controllers, dependency injection, request handling, and response types.

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);

Examples

<?php
// app/Http/Controllers/GreetingController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class GreetingController extends Controller
{
    public function __invoke(string $name): string
    {
        return "Welcome to Laravel 13, $name!";
    }
}

// routes/web.php
// Route::get('/greet/{name}', GreetingController::class);

Your Notes

Sign in to take notes for this lesson.

Discussion

Sign in to join the discussion.

Flashcards

Sign in to create flashcards.