Skip to content
Home Tutorials Roadmaps Courses
Log in Join free
Tutorials Laravel Controllers
Laravel Advanced FREE

Controllers

Lesson 1 of 17 Advanced Interactive

Controllers handle request logic. Create with php artisan make:controller.

Resource Controllers

Generate CRUD methods: php artisan make:controller PostController --resource

Dependency Injection

Type-hint services in constructor or method parameters.

Syntax

LARAVEL
class PostController extends Controller {
    public function index() {
        $posts = Post::all();
        return view("posts.index", compact("posts"));
    }
    public function store(Request $request) {
        Post::create($request->validated());
        return redirect("/posts");
    }
}
Laravel Controller
PHP
<?php
namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::latest()->get();
        return view("posts.index", compact("posts"));
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            "title" => "required|max:255",
            "body" => "required",
        ]);

        Post::create($validated);

        return redirect()->route("posts.index")
            ->with("success", "Post created!");
    }
}
?>

Practice

1
Exercise

Create a resource controller for Products.

Answer
php artisan make:controller ProductController --resource

Quick Quiz

1

What does Route::resource() create?

Resource routes create 7 routes for CRUD operations.

Interview Questions

Laravel automatically resolves class dependencies by injecting them into controller constructors or method parameters via the service container.