Temat: Akcje kontrolera możliwe do wykonania tylko przez requestAction()
Witam koledzy, widzę że społeczność tego forum nie jest wielka, ale miło mi że mogłem do niej dołączyć. CakePHP to mój pierwszy framework, więc proszę o wyrozumiałość.
Ponieważ temat niewiele mówi o moim problemie, napisze o co mi chodzi.
Chcę zrobić dynamiczne menu na stronie pobierane z bazy danych. Pomyślałem że stworzę kontroller menu posiadający metodę getMenu() która nie renderuje strony tylko zwraca powiedzmy tablicę wartości przez return. Metoda ta miała by być wywoływana przez inne kntrolery metodą requestAction(), wyglądało by to powiedzmy tak:
class dowolnyController ext ...
{
var $beforeFilter = array('firstGetMenu');
function firstGetMenu()
{
set('menu', $this->requestAction('/menu/getMenu/'));
}
...
}
Poza akcją getMenu w kontrolerze menu umieścił bym jeszcze logikę odpowiedzialną na edycję menu itd.
Problem teraz jest taki: jak sprawić żeby metoda getMenu osiągalna była jedynie przez requestAction z innych kontrolerów a nie osiągalna z poziomu przeglądarki : http://.../menu/getmenu, ponieważ nie wykonuje ona żadego widoku a jedynie zwraca wartości. W chwili obecnej po wywołaniu przez przeglądarkę /menu/getmenu dostaję ekran braku widoku dla metody. Oznaczenie metody getMenu() jako private też nic nie da ponieważ nie jest ona wtedy osiągalna przez requestAction().
Jeżeli koledzy znają rozwiązanie mojego problemu, ewentualne wiedzą że pobieranie menu na stronie powinno odbywać się inaczej niż ja to sobie wymyśliłem, proszę o pomoc i sugestie.