Witam, jestem naprawdę początkującym zendziarzem, chcąc się go lepiej nauczyć postanowiłem napisać sobie klasycznie - CMS'a. I teraz mam małą zagwostkę. W panelu administratora potrzebne będą uprawnienia, chcę to realizować za pomocą Zend_Acl które to będzie używane przez moją klasę umieszczoną w library (dokładniej Exulto_Controller_Admin). Zaczynam pisać i... Pojawia się problem. Chciałbym, jeśli użytkownik nie ma uprawnień pokazać mu komunikat żeby sobie stąd uciekł i zabić aplikację. Nie wiem tylko czy zabijanie Zenda za pomocą die() jest rozwiązaniem ładnym (wydaje mi się że zdecydowanie nie), ale jeśli sprawdzać to będzę za pomocą metody init() i w niej to wypiszę jakikolwiek tekst pojawi mi się on przed templatką. Oczywiście wyrzucenie wyjątku o błędzie powinno zakończyć działanie systemu, ale nie wiem jak zrobić to w "cywilizowany sposób", np. tak by templatka została obsłużona (header i footer się wyświetlił razem z tekstem) a sama akcja nie została wykonana. Jakieś propozycje dla laika?
melkorm
19.05.2011, 17:56:05
Najlepiej zrobić to na Pluginie kontrolera (zapraszam do manuala) wtedy możesz łatwo zmienić akcję/kontroler/moduł i wtedy zostanie wyświetlona strona komunikatu o braku uprawnień a kod z akcji do której użyszkodnik chciał się dostać nigdy się nie wykona i nie musisz zabijać zend'a.
Ja osobiście cały Zend_Auth / Zend_Acl mam na pluginach, także cały startup aplikacji, jak się je dobrze zrozumie (kolejność wykonywania itp) można bardzo fajne rzeczy uzyskać.
Np.
Gdy użytkownik chce się dostać do zasoby gdzie musi być zalogowany zapewne przekierowujesz go na akcję logowania, w przypadku użycia pluginów nie musisz tego robić, wystarczy zmienić parametry requestu (action,controller,module) i wyświetli się strona logowania a po zalogowaniu wyświetli się strona do której chciał się dostać.
A możesz mi jeszcze powiedzieć jak zrobić żeby z poziomu takiego pluginu przekierować kontroler i akcję na coś innego?
melkorm
19.05.2011, 21:48:18
Tu jest większość:
Zend-DevZone-PluginsOgólnie chodzi aby przed dispachem zmienić parametry Requestu
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.