खोज…
परिचय
रूट फ़ाइलों में क्लोज़र के रूप में तर्क को संभालने वाले आपके सभी अनुरोधों को परिभाषित करने के बजाय, आप नियंत्रक कक्षाओं का उपयोग करके इस व्यवहार को व्यवस्थित करना चाह सकते हैं। कंट्रोलर लॉजिक से जुड़े रिक्वेस्ट को एक सिंगल क्लास में ग्रुप कर सकते हैं। नियंत्रकों को डिफ़ॉल्ट रूप से app/Http/Controllers
निर्देशिका में संग्रहीत किया जाता है।
बेसिक कंट्रोलर
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
आप इस नियंत्रक कार्रवाई के लिए एक मार्ग को परिभाषित कर सकते हैं जैसे:
Route::get('user/{id}', 'UserController@show');
अब, जब कोई अनुरोध निर्दिष्ट मार्ग URI से मेल खाता है, तो UserController
वर्ग पर show
विधि निष्पादित की जाएगी। बेशक, मार्ग मापदंडों को विधि में भी पारित किया जाएगा।
नियंत्रक मिडिलवेयर
मिडिलवेयर आपकी रूट फ़ाइलों में नियंत्रक के मार्गों को सौंपा जा सकता है:
Route::get('profile', 'UserController@show')->middleware('auth');
हालाँकि, अपने नियंत्रक के निर्माता के भीतर मिडलवेयर निर्दिष्ट करना अधिक सुविधाजनक है। अपने कंट्रोलर के कंस्ट्रक्टर से मिडलवेयर विधि का उपयोग करके, आप आसानी से कंट्रोलर की कार्रवाई को मिडलवेयर असाइन कर सकते हैं।
class UserController extends Controller
{
/**
* Instantiate a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
}
}
संसाधन नियंत्रक
Laravel संसाधन रूटिंग कोड की एकल पंक्ति के साथ नियंत्रक के लिए विशिष्ट "CRUD" मार्ग प्रदान करता है। उदाहरण के लिए, आप अपने एप्लिकेशन द्वारा संग्रहीत "फ़ोटो" के सभी HTTP अनुरोधों को संभालने वाले एक नियंत्रक बनाने की इच्छा कर सकते हैं। make:controller
का उपयोग make:controller
कारीगर कमान, हम जल्दी से इस तरह के एक नियंत्रक बना सकते हैं:
php artisan make:controller PhotoController --resource
यह कमांड app/Http/Controllers/PhotoController.php
पर एक नियंत्रक उत्पन्न करेगा। नियंत्रक में उपलब्ध संसाधन संचालन में से प्रत्येक के लिए एक विधि होगी।
एक संसाधन नियंत्रक कैसे दिखते हैं इसका उदाहरण
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
संसाधन नियंत्रक का उदाहरण नीचे दी गई तालिका में विधि के नाम को साझा करता है।
अगला, आप नियंत्रक के लिए एक संसाधन मार्ग को पंजीकृत कर सकते हैं:
Route::resource('photos', 'PhotoController');
यह एकल मार्ग घोषणा संसाधन पर विभिन्न क्रियाओं को संभालने के लिए कई मार्ग बनाती है। जेनरेट किए गए कंट्रोलर में पहले से ही इन कार्यों में से प्रत्येक के लिए स्टब किए गए तरीके शामिल होंगे, जिसमें आपके द्वारा HTTP क्रिया और यूआरआई को सूचित करने वाले नोट शामिल हैं।
संसाधन नियंत्रक द्वारा नियंत्रित कार्य
क्रिया | यूआरआई | कार्य | मार्ग का नाम |
---|---|---|---|
प्राप्त | /photos | सूची | photos.index |
प्राप्त | /photos/create | सृजन करना | photos.create |
पद | /photos | दुकान | photos.store |
प्राप्त | /photos/{photo} | प्रदर्शन | photos.show |
प्राप्त | /photos/{photo}/edit | संपादित करें | photos.edit |
PUT / PATCH | /photos/{photo} | अपडेट करें | photos.update |
हटाएँ | /photos/{photo} | नष्ट | photos.destroy |