"Mastering Laravel Routing: A Beginner's Guide to Defining Routes and Linking Controllers"
Mastering Laravel Routing
A Beginner's Guide to Defining Routes and Linking Controllers
Objective:
- To
introduce students to Laravel's routing system.
- To
demonstrate how to define routes in Laravel and link them to controllers.
Outcome:
By the end of the class, students
will be able to:
- Understand
how routing works in Laravel.
- Define
routes in the routes/web.php file.
- Link
routes to controllers, making it easier to handle HTTP requests.
1.
Introduction to Routing in Laravel
Routing is a fundamental concept
in Laravel. It acts as the link between the user request (such as a URL) and
the application’s response. In simpler terms, routing defines how URLs are
mapped to controller actions and responses. Laravel's routing system makes it
easy to define routes for your application, which are essential for directing
traffic.
Routes are defined in the routes/web.php
file for web routes (i.e., routes that respond to browser requests).
Types of
HTTP Methods in Routing
There are several HTTP methods
that Laravel routes respond to:
- GET:
Used to retrieve data.
- POST:
Used to send data.
- PUT/PATCH:
Used to update data.
- DELETE:
Used to delete data.
However, for beginners, we will
focus on the GET method, which is most commonly used to display data.
2.
Defining Routes
In Laravel, the most common
method to define a route is by using the Route::get() method. This method takes
two arguments:
1. The URL
or URI: The path part of the URL that will trigger the route.
2. The
Controller Method: The controller action that should be executed
when the route is matched.
The basic syntax for defining a
route in Laravel is:
php
Copy code
Route::get('/example',
[ExampleController::class, 'index']);
- Route::get('/example',
…): This tells Laravel that the route responds to
the GET method at the /example URL.
- [ExampleController::class,
'index']: This links the route to the index method of
the ExampleController. When the user accesses the /example URL, Laravel
will run the index method in ExampleController.
3.
Example Breakdown
Let’s break down the example:
php
Copy code
Route::get('/example',
[ExampleController::class, 'index']);
- Route::get: This
is the route method. It listens for a GET request.
- '/example':
This is the URL endpoint. If a user navigates to http://your-app-url/example,
this route will be triggered.
- [ExampleController::class,
'index']: This part tells Laravel to use the ExampleController's
index method.
- ExampleController::class
refers to the controller file (which we’ll create next).
- 'index'
refers to the method inside the ExampleController class that should
handle the request.
4.
Creating the Controller
To complete the routing, you need
to create a controller. You can create a controller using Laravel's artisan
command-line tool:
bash
Copy code
php
artisan make:controller ExampleController
This command will generate a file
called ExampleController.php in the app/Http/Controllers directory. Inside this
file, you can define methods that will be triggered by your routes.
Here’s how the controller might
look:
php
Copy code
<?php
namespace
App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController
extends Controller
{
// The index method that corresponds to the
'/example' route
public function index()
{
return view('example'); // Return a
view named 'example.blade.php'
}
}
- index():
This is the method that gets called when a user visits the /example URL.
- return
view('example'): This will return a view named example. You
will need to create the corresponding view file in the resources/views
directory.
5.
Creating the View
In the resources/views folder,
create a new Blade template called example.blade.php. You can use this file to
display content to the user when they visit the /example route.
Here’s an example of what the example.blade.php
file might look like:
php
Copy code
<!DOCTYPE
html>
<html
lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>Example Page</title>
</head>
<body>
<h1>Welcome to the Example
Page!</h1>
<p>This is a simple example of
routing in Laravel.</p>
</body>
</html>
6.
Testing the Route
Once you’ve defined the route,
controller, and view:
1. Start
your Laravel development server if it’s not already running:
bash
Copy code
php
artisan serve
2. Open your
web browser and go to http://localhost:8000/example.
You should see the message
"Welcome to the Example Page!" displayed on the screen, indicating
that your route, controller, and view are working correctly.
7.
Summary of Key Concepts
- Routes:
Defined in the routes/web.php file. They map URLs to controller actions.
- Controllers:
Handle the logic for each route. You can generate them using php artisan
make:controller.
- Views:
Return HTML content to the user. They are placed in the resources/views
folder.
- HTTP
Methods: Routes can respond to different types of
HTTP requests (GET, POST, etc.). For now, we focused on the GET method.
8.
Additional Routing Concepts (Brief Overview for Next Lessons)
- Route
Parameters: Passing values in the URL (e.g., /user/{id}).
- Named
Routes: Giving routes names for easier referencing
in the code.
- Route
Groups and Middleware: Grouping routes for applying common settings
or middleware.
Practice
Exercise:
1. Create a
new route that responds to GET /about and links to a controller method called showAbout.
2. In the
controller, create the showAbout method that returns a view with information
about the website.
3. Test the
route by visiting http://localhost:8000/about in your browser.
By completing this exercise,
students will have hands-on practice with defining routes and linking them to
controller actions.
Conclusion
Routing is a crucial part of web
development, and in Laravel, it provides a clean and organized way to handle
user requests. In this class, you learned how to define simple GET routes, link
them to controller methods, and return views to users. This basic understanding
will form the foundation for more advanced routing techniques as we continue
our Laravel journey.

Comments
Post a Comment