2013-04-26 5 views
9

लार्वेल 4 में, आप संपूर्ण फ़िल्टर को बंद करने के बजाय फ़िल्टर कक्षाएं बना सकते हैं - बढ़िया। लेकिन क्या इन फिल्टर को app/filters.php या app/routes.php में पूरी तरह से होना चाहिए?मैं लार्वेल 4 फ़िल्टर कक्षा कहां रख सकता हूं?

आम तौर पर मुझे प्रति कक्षा एक फ़ाइल करना पसंद है, लेकिन मुझे लगता है कि फिल्टर.एफ़.पी. फ़ाइल में शामिल करने के लिए कुछ बेहतर है। आप इन्हें स्वचालित रूप से ढूंढने के लिए लार्वेल के लिए कहां रखेंगे? उदाहरण के लिए:

Route::filter('Thing', 'ThingFilter'); 

# can I put this in its own file and have laravel automatically use it? 
class ThingFilter { 
    function filter() { ... } 
} 
+0

मेरे ज्ञान के लिए डिफ़ॉल्ट नहीं है, लेकिन आप 'क्लासलोडर :: ऐड डायरेक्टरीज़ (सरणी (एप_पैथ()।'/फिल्टर ') को कॉल कर सकते हैं);' अपनी फ़िल्टर निर्देशिका पंजीकृत करने के लिए। – Wrikken

+0

संभवतः 'प्रारंभ/{$ env} .php' में रखने की सबसे संभावित जगह है, इसलिए उदाहरण के लिए' start/production.php'। – Wrikken

+0

अपनी टिप्पणी को एक उत्तर के रूप में डालें और मैं इसे स्वीकार करूंगा :) धन्यवाद! –

उत्तर

6

वहाँ मेरी जानकारी के लिए एक डिफ़ॉल्ट नहीं है, लेकिन आप अपने फ़िल्टर निर्देशिका रजिस्टर करने के लिए ClassLoader::addDirectories(array(app_path().'/filters')); कॉल कर सकते हैं। इसे रखने के लिए सही जगह app/start/global.php है जहां आपको पहले से पंजीकृत कुछ फ़ोल्डर्स देखना चाहिए।

एक 'local.php' लगता है जो एक उम्मीदवार नहीं है, लेकिन यह केवल (बशर्ते आप एक उचित सरणी या $app->detectEnvironment() में बंद जोड़ने के लिए, आम तौर पर विकास) विशिष्ट वातावरण के लिए है।

16

मेरे पास मेरे सभी फ़िल्टर फ़िल्टर नामक एक अलग निर्देशिका में हैं। और यहाँ कैसे मेरे filters.php फ़ाइल देखो की तरह ...

//--------------------------------------------------------- 
// Route Filters 
//--------------------------------------------------------- 
Route::filter('auth', '[email protected]'); 
Route::filter('auth.basic', '[email protected]'); 
Route::filter('guest', '[email protected]'); 
Route::filter('csrf', 'CsrfFilter'); 

मैं उन्हें composer.json के माध्यम से AutoLoad

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/filters", 
     "app/presenters", 
     "app/repositories", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php" 
    ] 
}, 

आप अपने composer.json फ़ाइल को अपडेट करने के बाद आप को चलाने के लिए की जरूरत है आदेश

composer dump-autoload 

अभी सत्यापित करने के लिए कि आप फ़ाइलों को लोड किया जाएगा,

की जाँच 210
vendor/composer/autoload_classmap.php 
संबंधित मुद्दे