AppController::beforeFilter() – nagle nie działa?

Jeśli od jakiegoś czasu używasz CakePHP, to wiesz, że istnieje metoda kontrolera beforeFilter(). Jest to tak zwany callback wywoływany tuż po wykonaniu akcji kontrolera, ale przed renderowaniem widoku (źródło).

Dość częstą praktyką jest definiowanie metody w pliku app/app_controller.php, w klasie AppController po to, aby wykonywać w niej operacje, które zawsze muszą być wykonane przed każdą akcją kontrolera. Jednak czasem zdarza się, że jednocześnie inny programista zdefiniuje metodę beforeFilter() w swoim kontrolerze, wtedy niedoświadczony programista może mieć problemy ze znalezieniem przyczyny “dlaczego mój beforeFilter() w AppController się nie odpala?”.
Powód jest prosty, jeśli dobrze rozumiemy zasady OOP (których w tym blogu przybliżał raczej nie będę). Zatem jeśli chcemy, aby nasza AppController::beforeFilter() odpalała się zawsze, niezależnie od tego, czy w jakim kontrolerze jest zdefiniowana beforeFilter() czy też nie, należy w kontrolerach umieszczać wywołanie metody z klasy AppController. Osiągamy to oczywiście za pomocą parent::beforeFilter().

Share Button

One thought on “AppController::beforeFilter() – nagle nie działa?

Leave a Reply

Your email address will not be published. Required fields are marked *