Controllers help keep your code neat by grouping all the actions for handling web requests in one place. This makes your app easier to understand and change.
When you want to separate the logic for different web pages or API endpoints.
When your routes need to do more than just show a simple page, like saving data or checking user input.
When you want to reuse code for handling requests in multiple places.
When your app grows and you want to keep your code organized and easy to maintain.
Syntax
Laravel
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function index()
{
// code to handle a request
}
public function store(Request $request)
{
// code to save data
}
}
Controllers are PHP classes inside the App\Http\Controllers folder.
Each method inside a controller handles a specific request or action.
Examples
This controller shows a home page when the index method is called.
Laravel
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function index()
{
return view('home');
}
}
This controller method handles saving user data sent from a form.
Laravel
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
// Save user data from the request
}
}
Sample Program
This simple controller has one method that returns a greeting message when called.
Laravel
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class GreetingController extends Controller
{
public function sayHello()
{
return'Hello, welcome to our site!';
}
}
OutputSuccess
Important Notes
Controllers help keep your routes file clean by moving logic out of it.
Use meaningful method names in controllers to describe what each action does.
Controllers can call other classes or services to keep code organized.
Summary
Controllers group request handling code to keep your app organized.
They make it easier to manage and update your app as it grows.
Using controllers helps separate concerns between routing and business logic.
Practice
(1/5)
1. Why do Laravel applications use controllers to handle requests instead of putting all code in routes?
easy
A. To organize code and separate routing from business logic
B. Because routes cannot handle HTTP requests
C. To make the application run faster
D. Because controllers automatically create database tables
Solution
Step 1: Understand the role of routes and controllers
Routes define URL patterns, but controllers hold the logic to respond to those URLs.
Step 2: Recognize the benefit of separation
Separating routing and logic keeps code organized and easier to maintain as the app grows.
Final Answer:
To organize code and separate routing from business logic -> Option A
Quick Check:
Controllers organize request handling = A [OK]
Hint: Controllers separate logic from routes for cleaner code [OK]
Common Mistakes:
Thinking routes handle all logic
Believing controllers speed up the app
Assuming controllers create database tables
2. Which of the following is the correct way to define a controller method to handle a GET request in Laravel?
easy
A. public show() { return 'page'; }
B. public function show() { return view('page'); }
C. function show() { echo 'page'; }
D. def show() { return view('page'); }
Solution
Step 1: Recall Laravel controller method syntax
Methods must be public functions inside a controller class.
Step 2: Check each option's syntax
public function show() { return view('page'); } uses correct PHP syntax with public function and returns a view.
Final Answer:
public function show() { return view('page'); } -> Option B
Quick Check:
Laravel controller methods = public function [OK]
Hint: Use 'public function' for controller methods in Laravel [OK]
Common Mistakes:
Omitting 'public' keyword
Using wrong function syntax
Using Python or other language syntax
3. Given this controller method in Laravel:
public function greet() { return 'Hello, Laravel!'; }
What will be the output when this method is called by a route?
medium
A. The view named 'Hello, Laravel!'
B. A blank page
C. An error because return type is missing
D. Hello, Laravel!
Solution
Step 1: Understand what the method returns
The method returns a plain string 'Hello, Laravel!'.
Step 2: Know Laravel's response behavior
Returning a string from a controller sends that string as the HTTP response body.
Final Answer:
Hello, Laravel! -> Option D
Quick Check:
Return string from controller = output string [OK]
Hint: Return strings directly to send text response [OK]
Common Mistakes:
Expecting a view instead of string
Thinking missing return type causes error
Assuming blank page means success
4. This Laravel controller method has an error:
public function index() { echo 'Welcome'; }
What is the problem with this code?
medium
A. Using echo instead of return causes no response
B. Method must be private, not public
C. Missing semicolon after echo statement
D. Controller methods cannot output text
Solution
Step 1: Identify how Laravel expects responses
Laravel expects controller methods to return responses, not echo output directly.
Step 2: Understand echo vs return in Laravel
Echo sends output immediately but Laravel won't capture it as a proper HTTP response.
Final Answer:
Using echo instead of return causes no response -> Option A
Quick Check:
Use return, not echo, in controller methods [OK]
Hint: Always return response, never echo in controllers [OK]
Common Mistakes:
Thinking echo works like return
Believing method visibility is wrong
Ignoring Laravel response rules
5. You want to organize your Laravel app so that all user-related request handling is in one place. Which approach best uses controllers to achieve this?
hard
A. Put all user logic directly inside web.php routes file
B. Create separate controllers for each user action like ShowUserController, EditUserController
C. Create a UserController with methods like show(), edit(), and update()
D. Write user logic inside middleware instead of controllers
Solution
Step 1: Understand controller grouping best practices
Grouping related actions in one controller keeps code organized and easier to maintain.
Step 2: Evaluate options for organizing user logic
Create a UserController with methods like show(), edit(), and update() groups user actions in UserController, which is standard Laravel practice.
Final Answer:
Create a UserController with methods like show(), edit(), and update() -> Option C
Quick Check:
Group related actions in one controller = B [OK]
Hint: Group related request methods in one controller class [OK]
Common Mistakes:
Scattering user logic in routes file
Creating too many single-action controllers
Using middleware for business logic
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.