Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cakephp] generowanie menu w cakephp
Forum PHP.pl > Forum > PHP > Frameworki
woj_tas
Witam!

Chciałbym sie was spytać jak generujecie menu w CakePhp. W starym, napisanym przez siebie "Framework-u" generowałem je dla każdego id tak samo, tzn: przyjmowalem jako parametr wejsciowy id, sprawdzałem czy jest w bazie i jezeli jest generowałem menu z zaznaczeniem aktualnej zakladki. Jeżeli miałem przyjazne urle, robilem to samo (wczesniej zamieniałem tylko urla na id). Wszystko to (pobieranie id, zamiana z urla itp) robiłem tak jakby "globalnie", tzn mialem strone podzielona na "controler" i "widok" ale menu generowałem poza nimi. Zaletą było to ze kod z generowania menu nie musialem wklejac w kazdego controlera. Wobec tego moje pytanie brzmi: jak wygenerować menu w CakePhp własnie tak aby nie trzeba było wklejac kodu do pobierania menu do każdego controlera?


pozdrawiam
vezyr
Witam.
Jeżeli nie chcesz wklejać kodu do pobierania menu do każdego kontrolera, może wstaw go do metody beforeFilter ogólnego AppControllera? Stwórz w /app plik o nazwie app_controller.php o takim kodzie:
  1. <?php
  2. class AppController extends Controller {
  3.  
  4. function beforeFilter()
  5. {
  6.  
  7. }
  8. }
  9. ?>

Metoda beforeFilter jest wykonywana przed wykonaniem żądanej metody kontrolera, a ponieważ każdy kontroler dziedziczy po AppController, masz gwarancję, że Twoje menu zostanie wygenerowane zanim zostanie wykonana żadana przez użytkownika metoda i "wygenerowany" widok. Należy tylko pamiętać, że jeżeli chcemy stworzyć metodę beforeFilter w jakimś kontrolerze (przeciążyć ją), wywołać w jej kodzie metodę z klasy - rodzica:
  1. <?php
  2. parent::beforeFilter();
  3. ?>

Pozdrawiam.
wojtek.zielinski
Miałem ostatnio podobny problem - ten post rozwiał wszelkie moje wątpliwości co do rozwiązania smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.