Laravel में जब भी कोई user आपके application में किसी URL को खोलता है, तो उसका पूरा data-flow और logic आखिर संभालता कौन है?
इस सवाल का जवाब है — Laravel Controller
Controller ही वह जगह है जहाँ आपके application का business logic लिखा जाता है।
अगर आप Laravel में professional बनना चाहते हैं, तो Controller को master करना ही होगा!
Laravel Controller क्या है?
Laravel में Controller एक PHP class होती है, जो:
- User request को receive करती है
- Model से data लाती है
- Logic apply करती है
- Response को View तक भेजती है
सीधे शब्दों में:
👉 Controller = User और Database के बीच का पुल (Bridge)
सरल परिभाषा: Controller एक PHP क्लास (Class) है जो यूजर की रिक्वेस्ट को सुनता है, तय करता है कि क्या करना है (जैसे डेटाबेस से डेटा लाना), और फिर यूजर को सही जवाब (View या HTML पेज) दिखाता है।
Why Do We Need Controllers?
जब आप Laravel सीखना शुरू करते हैं, तो आप अपना सारा कोड routes/web.php फाइल में लिख सकते हैं।
// बिना कंट्रोलर के (एक खराब तरीका)
Route::get('/user/{id}', function ($id) {
// डेटाबेस से यूजर ढूँढो
$user = DB::table('users')->where('id', $id)->first();
// व्यू रिटर्न करो
return view('user.profile', ['user' => $user]);
});PHPयह छोटे प्रोजेक्ट के लिए ठीक है। लेकिन सोचिए, अगर आपकी वेबसाइट बड़ी हो गई और उसमें 100 ऐसे रूट्स हैं? आपकी रूट फाइल बहुत बड़ी और गंदी हो जाएगी। उसे मैनेज करना असंभव हो जाएगा।
कंट्रोलर के फायदे:
- Code साफ और organized रहता है
- हर logic एक ही जगह लिखा जाता है
- MVC structure maintain होता है
- Reusability बढ़ती है
- Testing आसान होती है
- Complex logic handle करना simple हो जाता है

Laravel में Controllers कहाँ मिलते हैं
app/Http/Controllers/PHPहर नया controller यहीं create होता है।
Controller कैसे बनाते हैं?
Laravel में कंट्रोलर बनाना बहुत आसान है। हमें मैन्युअल रूप से फाइल बनाने की जरूरत नहीं है। हम टर्मिनल (Terminal) या कमांड प्रॉम्प्ट का उपयोग करेंगे। अपने प्रोजेक्ट फोल्डर में यह कमांड चलाएँ:
php artisan make:controller UserControllerBashएक basic controller बनेगा:
class UserController extends Controller
{
//
}
PHP💡 प्रो टिप: कंट्रोलर का नाम हमेशा PascalCase में रखें और अंत में Controller शब्द जोड़ें (जैसे: UserController, ProductController)। यह एक अच्छा तरीका (convention) है।
Write the Logic In Controller
अब उस नई फाइल (app/Http/Controllers/UserController.php) को अपने कोड एडिटर में खोलें। आपको कुछ ऐसा बेसिक ढांचा दिखेगा:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
// हम अपना फंक्शन (Method) यहाँ लिखेंगे
}PHPअब, आइए इसके अंदर एक फंक्शन (जिसे मेथड भी कहते हैं) बनाते हैं जो हमारे ‘About’ पेज को दिखाएगा।
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function about()
{
// यहाँ हम कोई भी लॉजिक लिख सकते हैं
$companyName = "Tech India Solutions";
// 'about' नाम का व्यू रिटर्न करें और डेटा साथ भेजें
return view('about', ['name' => $companyName]);
}
}PHPController को Route से कैसे जोड़ते हैं?
हमने कंट्रोलर तो बना लिया, लेकिन Laravel को कैसे पता चलेगा कि कब इस कंट्रोलर का इस्तेमाल करना है? इसके लिए हमें एक ‘रूट’ (Route) बनाना होगा।
अपनी routes/web.php फाइल खोलें और यह कोड जोड़ें:
use App\Http\Controllers\UserController; // कंट्रोलर को इम्पोर्ट करना न भूलें!
// पुराना तरीका (Closure) - इसे हम हटा देंगे
// Route::get('/about', function () { return view('about'); });
// नया तरीका (Controller का उपयोग करके)
Route::get('/about', [UserController::class, 'about']);PHPइस कोड का मतलब: “जब भी कोई यूजर /about URL पर जाए, तो PageController क्लास के अंदर मौजूद about फंक्शन को चलाओ।”
अब जब आप अपने ब्राउज़र में your-project.test/about खोलेंगे, तो कंट्रोलर अपना काम करेगा और पेज दिखा देगा।
Controller method:
public function index() {
return "All Users List";
}
PHPController में Methods कैसे बनते हैं?
class UserController extends Controller
{
public function index(){
return "Show All Users";
}
public function create(){
return view('users.create');
}
public function store(Request $request){
// save data
}
}
PHPTypes of Controllers in Laravel
Laravel में आपकी जरूरतों के अनुसार अलग-अलग तरह के कंट्रोलर होते हैं। आइए मुख्य प्रकारों को समझें:
Basic Controller
यह सबसे आम प्रकार है, जैसा हमने अभी PageController बनाया। इसमें आप अपनी मर्जी से कितने भी फंक्शन (मेथड्स) बना सकते हैं। जैसे about(), contact(), services() आदि।
Invokable Controller
कभी-कभी आपको एक ऐसा कंट्रोलर चाहिए होता है जो सिर्फ एक ही काम करे। जैसे, सिर्फ एक रिपोर्ट डाउनलोड करना।
इसके लिए हम कंट्रोलर के अंदर __invoke नाम का एक जादुई मेथड इस्तेमाल करते हैं।
php artisan make:controller DownloadReportController --invokableBashclass DownloadReportController extends Controller
{
public function __invoke()
{
// रिपोर्ट डाउनलोड करने का लॉजिक
return "रिपोर्ट डाउनलोड हो रही है...";
}
}PHPरूट: इसके रूट में आपको मेथड का नाम देने की जरूरत नहीं होती:
Route::get('/download-report', DownloadReportController::class);PHPResource Controller – Complete CRUD in One Command
यह Laravel का सबसे पावरफुल फीचर है।
जब हम किसी चीज़ (जैसे प्रोडक्ट्स, ब्लॉग पोस्ट्स, या यूज़र्स) के लिए एप्लीकेशन बनाते हैं, तो हमें अक्सर CRUD ऑपरेशन्स करने पड़ते हैं:
- Create (बनाना)
- Read (पढ़ना/देखना)
- Update (अपडेट करना)
- Delete (हटाना)
इन चारों कामों के लिए हमें आमतौर पर 7 अलग-अलग रूट्स और 7 कंट्रोलर फंक्शन्स बनाने पड़ते हैं। यह बहुत थकाऊ काम हो सकता है।
Resource Controller यह सब आपके लिए ऑटोमेटिकली कर देता है!
बनाने का कमांड: --resource फ्लैग का उपयोग करें।
php artisan make:controller ProductController --resource
BashAuto-generated 7 methods:
| HTTP Verb (तरीका) | URL (रास्ता) | Controller Method (कंट्रोलर का फंक्शन) | Action (क्या काम होता है?) | नाम (Route Name) |
| GET | /products | index() | सभी प्रोडक्ट्स की लिस्ट (सूची) दिखाना। | products.index |
| GET | /products/create | create() | नया प्रोडक्ट बनाने के लिए HTML फॉर्म दिखाना। | products.create |
| POST | /products | store() | फॉर्म से आए डेटा को डेटाबेस में सेव (Store) करना। | products.store |
| GET | /products/{id} | show($id) | किसी एक विशिष्ट प्रोडक्ट (जिसका ID {id} है) की पूरी जानकारी दिखाना। | products.show |
| GET | /products/{id}/edit | edit($id) | किसी मौजूदा प्रोडक्ट को एडिट (सुधारने) के लिए फॉर्म दिखाना। | products.edit |
| PUT / PATCH | /products/{id} | update($id) | एडिट फॉर्म से आए डेटा से प्रोडक्ट को अपडेट करना। | products.update |
| DELETE | /products/{id} | destroy($id) | किसी विशिष्ट प्रोडक्ट को डेटाबेस से हटाना (डिलीट करना)। | products.destroy |
जब आप यह फाइल खोलेंगे, तो आप देखेंगे कि Laravel ने पहले से ही 7 खाली फंक्शन्स बना दिए हैं:
index(): सभी प्रोडक्ट्स की लिस्ट दिखाने के लिए।create(): नया प्रोडक्ट बनाने का फॉर्म दिखाने के लिए।store(): नए प्रोडक्ट को डेटाबेस में सेव करने के लिए।show($id): किसी एक प्रोडक्ट की डिटेल दिखाने के लिए।edit($id): प्रोडक्ट एडिट करने का फॉर्म दिखाने के लिए।update($id): एडिट किए गए प्रोडक्ट को अपडेट करने के लिए।destroy($id): प्रोडक्ट को डिलीट करने के लिए।

रूट का जादू: आपको 7 अलग-अलग रूट्स लिखने की जरूरत नहीं है। सिर्फ एक लाइन काफी है:
Routes:
Route::resource('products', ProductController::class);Bash
डेटा को व्यू (View) तक पहुँचाना
कंट्रोलर का मुख्य काम डेटा तैयार करके व्यू को देना है। इसके कई तरीके हैं, लेकिन ये दो सबसे आम हैं:
तरीका 1: एरे (Array) का उपयोग करके
public function show($id)
{
$user = User::find($id);
return view('user.profile', ['user' => $user, 'status' => 'Active']);
}PHPतरीका 2: compact() फंक्शन का उपयोग करके (सबसे लोकप्रिय और साफ तरीका)
अगर आपके वेरिएबल का नाम और एरे की की (key) का नाम एक ही है, तो आप compact() का उपयोग कर सकते हैं।
public function show($id)
{
$user = User::find($id);
$status = 'Active';
// यह पिछले तरीके जैसा ही काम करता है, लेकिन लिखने में छोटा है
return view('user.profile', compact('user', 'status'));
}PHPcompact('user', 'status') बैकग्राउंड में ['user' => $user, 'status' => $status] बना देता है।
What is Dependency Injection in Controllers
Laravel में, हमें अक्सर यूज़र की रिक्वेस्ट का डेटा (जैसे फॉर्म में भरा गया नाम, ईमेल) चाहिए होता है। इसके लिए हमें Request क्लास की जरूरत होती है।
हमें Request का ऑब्जेक्ट खुद बनाने की जरूरत नहीं है। हम बस इसे अपने कंट्रोलर फंक्शन में “टाइप-हिंट” (Type-hint) कर देते हैं, और Laravel इसे हमारे लिए इंजेक्ट कर देता है।
Controller methods automatically Request object या अन्य services inject कर सकते हैं:
use Illuminate\Http\Request; // ऊपर इम्पोर्ट करना जरूरी है
class UserController extends Controller
{
// यहाँ हम Laravel से कह रहे हैं: "मुझे Request ऑब्जेक्ट चाहिए"
public function store(Request $request)
{
// Laravel ने हमें $request ऑब्जेक्ट दे दिया है
// अब हम आसानी से फॉर्म का डेटा निकाल सकते हैं
$name = $request->input('name');
$email = $request->input('email');
// ... डेटा सेव करने का लॉजिक
}
}PHPयही डिपेंडेंसी इंजेक्शन है—जरूरी टूल्स को खुद बनाने के बजाय Laravel से मांग लेना। यह Laravel की सबसे powerful features में से एक है।
Route Group के साथ Controllers
Route::prefix('admin')->group(function(){
Route::get('/dashboard', [AdminController::class, 'index']);
});PHPAPI Controllers
php artisan make:controller Api/UserController --apiBashAPI controllers:
- JSON responses return करते हैं
- Stateless होते हैं
- Token-based authentication support करते हैं
Best Practices for Controllers (Professional Tips)
✔ Controllers को छोटा रखें
✔ Business logic Model/Service में रखें
✔ Request validation Form Request में करें
✔ Meaningful method names रखें
✔ API और Web controllers अलग बनाएं
✔ Single Responsibility Principle follow करें
Performance Optimization Tips
- Heavy logic service classes में रखें
- Resource controllers use करें
- Caching use करें
- Reusable helpers create करें
दोस्तों, कंट्रोलर Laravel एप्लीकेशन का एक अनिवार्य हिस्सा है। यह आपके कोड को स्ट्रक्चर देता है और MVC पैटर्न को लागू करता है।
मुख्य बातें याद रखें:
- कंट्रोलर मॉडल और व्यू के बीच का मैनेजर है।
- यह रूटिंग फाइल को साफ-सुथरा रखने में मदद करता है।
php artisan make:controllerकमांड से इसे आसानी से बनाया जा सकता है।- CRUD ऑपरेशन के लिए Resource Controller सबसे अच्छा विकल्प है।
- डिपेंडेंसी इंजेक्शन के जरिए आप आसानी से
Requestजैसे ऑब्जेक्ट्स प्राप्त कर सकते हैं। - अपने कंट्रोलर्स को हमेशा सरल और छोटा (Skinny) रखने की कोशिश करें।
एक बार जब आप कंट्रोलर के कांसेप्ट को समझ लेते हैं, तो Laravel में बड़ी से बड़ी वेबसाइट बनाना बहुत आसान और मजेदार हो जाता है।
php laravel controllers,testing laravel controllers,laravel controllers explained,laravel controllers resource,laravel controllers naming,laravel controllers folder,laravel controllers api,
php laravel controllers,testing laravel controllers,laravel controllers explained,laravel controllers resource,laravel controllers naming,laravel controllers folder,laravel controllers api,
laravel controller and model create,laravel controller artisan command,laravel controller auth,laravel controller alert message,laravel controller and model,laravel api controllers

Welcome to HindiTutorials, your go-to platform for learning and mastering concepts in Hindi! Our mission is to make education accessible and simple for everyone by providing high-quality tutorials on programming, technology, and various other topics.