Controllers in Laravel — a practical guide to Laravel controllers with clear examples you can reuse in real projects.
Laravel Tutorial Series (4/27). Prefer one page? Read the complete Laravel tutorial (all 27 topics).
Short description
Controllers group related request-handling logic. Instead of long closures in `web.php`, you call controller methods.
Create a controller
php artisan make:controller PostController
Example controller
<?php
namespace AppHttpControllers;
use AppModelsPost;
use IlluminateHttpRequest;
class PostController extends Controller
{
public function index()
{
$posts = Post::latest()->get();
return view('posts.index', compact('posts'));
}
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
public function store(Request $request)
{
// validate + save
}
}
Wire routes
use AppHttpControllersPostController;
Route::get('/posts', [PostController::class, 'index']);
Route::get('/posts/{post}', [PostController::class, 'show']);
Route::post('/posts', [PostController::class, 'store']);
Resource controller (shortcut)
php artisan make:controller ProductController --resource
Route::resource('products', ProductController::class);