Why Controllers Organize Request Handling in Laravel
📖 Scenario: You are building a simple web application using Laravel. You want to organize how your app handles user requests by using controllers. Controllers help keep your code clean and easy to manage, especially when your app grows.
🎯 Goal: Learn how to create a controller in Laravel and use it to handle a web request instead of putting all the code in the routes file.
📋 What You'll Learn
Create a controller class named PageController
Add a method home inside PageController that returns a welcome message
Define a route that uses PageController@home to handle the root URL /
Understand how controllers help organize request handling in Laravel
💡 Why This Matters
🌍 Real World
Web applications often have many pages and actions. Controllers help organize the code that handles these requests, making the app easier to build and maintain.
💼 Career
Understanding how to use controllers is essential for Laravel developers to write clean, scalable, and maintainable web applications.
Progress0 / 4 steps
1
Create the Controller Class
Create a controller class named PageController inside the app/Http/Controllers directory. The class should extend Controller.
Laravel
Hint
Controllers in Laravel are PHP classes inside app/Http/Controllers. They usually extend the base Controller class.
2
Add a Method to Handle the Home Page
Inside the PageController class, add a public method named home that returns the string 'Welcome to the Home Page!'.
Laravel
Hint
Controller methods handle requests and return responses. Here, the home method returns a simple string.
3
Define a Route Using the Controller Method
In the routes/web.php file, define a GET route for '/' that uses PageController@home to handle the request.
Laravel
Hint
Routes connect URLs to controller methods. Use the array syntax with the controller class and method name.
4
Complete the Controller Setup
Ensure the PageController class and the route are correctly set up so that visiting '/' returns the welcome message. Confirm the namespace and use statements are correct.
Laravel
Hint
Controllers keep your request handling organized by grouping related methods. Routes point to these methods to respond to user requests.
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.