✅ Step-by-Step Laravel Learning Plan (Free)
🔹 Step 1: Learn PHP Basics (if you're new to PHP)
Before Laravel, you must understand PHP fundamentals.
Free PHP Resources:
W3Schools PHP Tutorial
PHP Manual
Learn PHP - Codecademy (Free parts)
🔹 Step 2: Understand MVC and Composer
MVC = Model View Controller (Laravel is an MVC framework)
Composer = Dependency manager (used to install Laravel and packages)
Free Resources:
Laravel Basics on Laravel News
Composer Official Docs
🔹 Step 3: Start Learning Laravel
🧠 Topics to Learn:
Routing
Controllers
Views (Blade)
Models & Migrations
CRUD operations
Authentication
Eloquent ORM
Middleware
API Routes (if needed)
Top Free Laravel Learning Platforms:
1. 📘 Laravel Official Docs
o Most trusted and up-to-date.
2. 📺 Laravel From Scratch - YouTube (by Laracasts)
o Highly recommended beginner-friendly playlist (free).
3. 💻 Codecourse YouTube Channel
o Very practical Laravel projects.
4. 💻 Bitfumes Laravel Tutorials (YouTube)
o Great for beginners, especially in South Asia.
🔹 Step 4: Practice with Small Projects
Try building:
A TODO app
A blog system (with CRUD)
A simple eCommerce cart
A contact form with email
🔹 Step 5: Explore Laravel Ecosystem
Laravel Jetstream / Breeze – starter kits
Laravel Livewire – reactive components
Laravel API & Sanctum – for API development
💡 Bonus Tips:
Use Laravel Playground to experiment without installing Laravel.
Join the Laravel Discord or r/laravel to ask questions and get help.
Would you like me to create a personalized Laravel learning schedule for you based on how
much time you can study each day?
[Link]
Constraint Pattern Description
Numbers only [0-9]+ Only digits
Alphabets only [A-Za-z]+ Only letters
Slugs (letters, -) [A-Za-z\-]+ Letters and hyphens
Alphanumeric [A-Za-z0-9]+ Letters and numbers
Multiple Wildcards with Constraints
Route::get('/post/{slug}/{id}', function ($slug, $id) {
return "Post: $slug, ID: $id";
})->where([
'slug' => '[A-Za-z\-]+',
'id' => '[0-9]+'
]);
🔒 Applying Wildcard Constraints
To restrict the wildcard (e.g., make sure {id} is only numbers), use the where() method:
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
})->where('id', '[0-9]+');
Let's take a look at an example of a basic controller. A controller may have any number of public
methods which will respond to incoming HTTP requests:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\View\View;
class UserController extends Controller
/**
* Show the profile for a given user.
*/
public function show(string $id): View
{
return view('[Link]', [
'user' => User::findOrFail($id)
]);
Once you have written a controller class and method, you may define a route to the controller
method like so:
use App\Http\Controllers\UserController;
Route::get('/user/{id}', [UserController::class, 'show']);
When an incoming request matches the specified route URI, the show method on the App\
Http\Controllers\UserController class will be invoked and the route parameters will be passed to
the method
[Link]