2013-04-26 12 views
9

Lagünde 4, tüm filtreyi bir kapak içine koymak yerine filtre sınıfları oluşturabilirsiniz - harika. Ancak bu filtreler tamamen app/filters.php veya app/routes.php'da mı olmalıdır?Laravel 4 filtre sınıflarını nereye yerleştirebilirim?

Genelde, sınıf başına bir dosya yapmayı severim, ancak daha sonra yapılacak daha iyi bir şey olduğunu düşünürüm, daha sonra filters.php dosyasında bir grup içerir. Bunları otomatik olarak bulmak için laravel'e nereye koyarsınız? Örneğin:

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

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

Bilgim için bir varsayılan yok, ancak 'ClassLoader :: addDirectories (dizi (app_path().'/Filters ')); – Wrikken

+0

Bunu yapmanın en muhtemel yeri muhtemelen "start/{$ env} .php", yani "start/production.php" biçimindedir. – Wrikken

+0

yorumunuzu cevap olarak ekleyin ve kabul edeceğim :) Teşekkürler! –

cevap

6

Bildiğim kadarıyla varsayılan yoktur, ancak filtre dizini kayıt ClassLoader::addDirectories(array(app_path().'/filters')); çağırabilir. Bunu koymak için doğru yer, zaten kayıtlı olan bazı klasörleri görmeniz gereken app/start/global.php.

bir aday görünüyor 'yerel.php' yoktur, ama bu sadece (eğer $app->detectEnvironment() uygun bir dizi veya kapanmasını eklemek sağlanan genellikle gelişimini) belirli ortamlar için tasarlanmıştır.

16

Tüm filtrelerim filtreleri olarak adlandırılan ayrı bir dizinde var. Burada Ve filters.php dosya bakmak gibi ...

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

ben size composer.json dosyasını güncelledikten sonra, çalıştırmak için gereken

"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 aracılığıyla onları özdevinimli_yükle nasıl

composer dump-autoload 

komut

göz atın dosyaların yüklenmiş olacağını VERFIY için 210
vendor/composer/autoload_classmap.php