Filter için bir requestin controllera ulaşmadan önce gerekli kontrolleri yapmamızı sağlayan bir ara katman diyebiliriz. Örneğin; bir kullanıcı admin paneline erişmeye çalışıyorsa erişim yetkisinin olup olmadığını sorgulayıp buna göre işlemler yapabiliriz veya admin paneli giriş sisteminde şifrenin doğru girilip girilmemesine göre hangi sayfaya gideceğini atayabiliriz.

Filter oluşturmak için app klasörünün altındaki Filters klasörüne gidilir ve burada istenilen yapı oluşturulur. Oluşturduktan sonra ise filterımızı sisteme tanıtmamız gerekmektedir. Bunun için de Config klasörü içerisinde Filters.php isimli dosyayı kullanırız.

Filters.php dosyasının içerisinde “aliases”, “globals”, “methods” ve “filters” adında 4 tane public array bulunur. Burada aliases bölümüne gelip filterımızın ismini ve namespaceini yazarız.

Filterlar, CodeIgniter\Filters\FilterInterface’i implemente eden ve before() ile after() olmak üzere 2 tane metoda sahip sınıflardır. Sınıf, her iki metodu da içermelidir ancak gerekli değilse boş bırakılabilir. En temel anlamda, before filtreleri controller yürütülmeden önce çalışır. Oluşturduğum örnekteki filtre bir before filtresidir ve adminin giriş yapıp yapmamasına göre ya login sayfasına ya da dashboard sayfasına gitmesini sağlar. After filtreleri ise controller yürütüldükten sonra çalışır. Son çıktıyı önbelleğe alma gibi durumlarda kullanılabilir.

Eğer yazmış olduğumuz filterın sisteme kayıtlı olan tüm routelarda çalışmasını istiyorsak globals arrayine yazarız. Routes kısmında tek tek yazmak yerine bir filtrenin hangi routelarda çalışacağına karar verdiğimiz yer de filters arrayidir. POST, GET, PUT ve benzeri gibi belirli bir HTTP metodunun tüm isteklerine filtre uygulamak da methods arrayi ile mümkündür. globals ve filters, before ve after, methods yalnızca before çalışır.