Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Frameworki _ [ZendFramework]Współdzielenie akcji/kontrolerów pomiędzy modułami

Napisany przez: Gabrielx 27.08.2012, 12:16:32

Witam.

Mam dwa moduły - admin, user. Oba moduly pozwalaja na logowanie się do aplikacji. Czy jest możliwosć dziedziczenia akcji pomiędzy modułami? Czy polecacie może inne rozwiązanie.

Napisany przez: Riggs 27.08.2012, 13:14:23

A nie możesz zrobić jednego logowania i dostęp do modułu sprawdzać po roli (admin, user, guest)? ACL świetnie się do tego nada, w dodatku jeśli zabezpieczasz tylko moduły to konfiguracja będzie banalna.

Napisany przez: Gabrielx 27.08.2012, 13:21:28

Tak, tylko że nie mogłem znależć fajnego zobrazowania tego całego ACL'a. Masz jakieś fajne materiały, jak to wygląda w praktyce? Gdzie mam to po prostu wszystko umieścić.

Napisany przez: Riggs 27.08.2012, 15:56:05

Tu masz świetny wpis batmana na temat ACL http://blog.wilgucki.pl/2011/05/zend_acl-w-praktyce.html . Generalnie polecam poczytać tego bloga, dużo fajnych rzeczy o Zend.

W twoim przykładzie będą tylko 2 zasoby (resource) - najlepiej stwórz od nazwy modułu (admin, user). W pluginie pobierz sobie request->getModuleName() oraz rolę użytkownika (z Zend Auth) i użyj hasResource.

Napisany przez: Gabrielx 27.08.2012, 16:38:14

Ok. Dziękuję.

1. W jakim miejscu najlepiej utworzyć ten plugin?
2. Napisałeś wcześniej żebym zrobił jedno logowanie - czyli jak mam dwa "module" user, admin, to mam przed modułami to utworzyć? Nie mogę wymyślić logiki dla mojej aplikacji.

Ps. Jaka jest zasadnicza różnica pomiędzy helperem a pluginem? Bo np. zarówno plugin jaki i helper może być stosowany do widoku.

Napisany przez: Riggs 27.08.2012, 17:28:38

1. Najlepiej w katalogu library zrób sobie podkatalog ze swoją "przestrzenią nazw" np. App_Plugin_ACL (oczywiście zapisujesz w library/App/Plugin/ACL) i rozszerzasz Zend_Controller_Plugin_Abstract i nadpisz metodę preDispatch();
2. Ja bym zrobił moduł default (czyli dostępny dla userów i gości) oraz admin. Oczywiście jak chcesz to możesz ustawić domyślny moduł na user. I w module user zrób kontroler np Profil i metody zalogujAction() wylogujAction().

Ad. PS. Helper widoku używany jest do generowania części layoutu (np. okienko Facebook, losowe zdjęcie, formularz logowania). Plugin nie generuje żadnych danych do widoku, raczej steruje aplikacją (przynajmniej ja tak robię).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)