उदाहरण के रूप में इस नियंत्रक लें:
<?php
class TestController extends BaseController {
public function getIndex()
{
echo "a";
}
public function postSecond($a)
{
echo "b";
}
}
में आपके मार्ग, यदि आपके पास
Route::controller('tests', 'TestController');
और निष्पादन ई
php artisan routes
आप होगा:
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
| | GET /tests/index/{v1}/{v2}/{v3}/{v4}/{v5} | | [email protected] | | |
| | GET /tests | | [email protected] | | |
| | POST /tests | tests.store | [email protected] | | |
| | GET /tests/{_missing} | | [email protected] | | |
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
Laravel नियंत्रक निरीक्षण करता है और क्या तरीकों यह पाता है के आधार पर मार्गों उत्पन्न करता है, स्वचालित रूप से।
लेकिन अगर आप ऐसा करेंगे
Route::resource('tests', 'TestController');
आप इस मार्ग सूची मिल जाएगा:
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
| | GET /tests | | Closure | | |
| | GET /tests | tests.index | [email protected] | | |
| | GET /tests/create | tests.create | [email protected] | | |
| | POST /tests | tests.store | [email protected] | | |
| | GET /tests/{tests} | tests.show | [email protected] | | |
| | GET /tests/{tests}/edit | tests.edit | [email protected] | | |
| | PUT /tests/{tests} | tests.update | [email protected] | | |
| | PATCH /tests/{tests} | | [email protected] | | |
| | DELETE /tests/{tests} | tests.destroy | [email protected] | | |
+--------+--------------------------------------------+------------------------+-----------------------------------+----------------+---------------+
कोई अनुमान लगा, Laravel मार्गों में से एक पूर्वनिर्धारित CRUD सूची का उपयोग करता है, तो आप उन मार्गों में से कुछ को हटा सकते हैं, लेकिन यह आपके विधियों के लिए मार्ग बनाने के लिए आपके नियंत्रक का निरीक्षण नहीं करेगा।
आप तय करते हैं कि आपके लिए सबसे अच्छा क्या है। लेकिन, आमतौर पर, यदि आपका नियंत्रक एक CRUD है, तो रूट :: संसाधन() एक अच्छी शुरुआत है, अन्यथा आप रूट :: नियंत्रक() का उपयोग कर सकते हैं या अपने मार्ग मैन्युअल रूप से बना सकते हैं।
संपादित करें:
कोई वास्तव में क्यों एक या क्यों एक और, डिजाइन और पसंद का सिर्फ एक मामला है। कुछ कभी भी उनमें से किसी का भी उपयोग नहीं करेंगे। यह सिर्फ टोपी Route::resource()
मार्ग के मार्ग के मार्ग का अनुसरण करता है: http://guides.rubyonrails.org/routing.html।
Route::resource()
का उपयोग करके आप, क्योंकि Laravel हमेशा डिफ़ॉल्ट रूप से उन सभी को बनाने के लिए, जब तक आप करते हैं ये सभी पद्धतियां बनाने की जरूरत नहीं है, लेकिन आप व्यर्थ रूट की एक सूची के साथ समाप्त कर देंगे:
Route::resource('photo', 'PhotoController',
array('only' => array('index', 'show')));
और मार्गों की आपकी सूची केवल अनुक्रमणिका दिखाएगी और कार्यों को दिखाएगी।
इसके अलावा, अगर आपको Route::resource()
का उपयोग करके कुछ अन्य मार्गों की आवश्यकता है, तो आपको उन्हें अपने सभी संसाधनों के लिए स्वचालित बनाने के लिए मैन्युअल रूप से बनाना होगा या कुछ जादू करना होगा। Route::controller()
का उपयोग करना सब कुछ स्वचालित है, हर बार जब आप एक नई विधि जोड़ते हैं, तो आपके लिए एक नया मार्ग बनाया जाता है।
फिर, अगर आप का निर्माण करने के लिए एक CRUD नियंत्रक है, Route::resource()
का उपयोग करके शुरू करते हैं। अन्यथा, अपने विशेष मामले में एक या दूसरे के लाभों के बारे में सोचें।
EDIT2:
यह एक बढ़िया लेख, फिल Sturgeon (PyroCMS और PHP-अंजीर) से है, मैन्युअल रूप से अपने सभी मार्गों का निर्माण के लाभों के बारे: http://philsturgeon.co.uk/blog/2013/07/beware-the-route-to-evil।
बाद वाले, रूट :: संसाधन, दस्तावेज़ों के अनुसार - जब तक आपको अधिक नियंत्रण की आवश्यकता न हो। :) –
तो 'रूट :: नियंत्रक (' पोस्ट ',' पोस्टकंट्रोलर ') का उपयोग करके;' रीस्टफुल कंट्रोलर बनाने के लिए इस्तेमाल नहीं किया जाना चाहिए? न ही हम नियंत्रक विधियों को उपयुक्त HTTP क्रिया के साथ उपसर्ग करना चाहिए? मुझे एहसास है कि आखिरी सवाल शायद इस प्रारूप के लिए उचित नहीं है क्योंकि यह व्यक्तिपरक है। – Iain