![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób mogę w widoku (np. views/scripts/index/index.phtml) uzyskać informację czy zalogowany użytkownik ma dostęp do jakiegoś działu? Chciałbym to uzyskać za pomocą funkcji typu isAllowed('controller', 'action') abym mógł ukryć linki w menu, do których użytkownik tak czy inaczej nie ma dostępu. Zend_Acl skonfigurowałem w następujący sposób:
bootstrap.php
models/Auth.php
models/Acl.php
Ten post edytował nexis 15.01.2009, 23:06:41 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
utworz sobie view helper, ktory renderuje ci menu i w nim pobierz z rejestru obiekt acl i sprawdzaj dostep do danego linku. chyba o to chodzi? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
jest pozno i tak sobie wymyslilem: (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
o to chodzilo? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
A ja dodam od siebie, że ten helper powinien rozszerzać helper url i zwracać albo pusty ciąg (jeśli użytkownik nie ma uprawnień) lub to co zwraca helper url (jeśli użytkownik posiada uprawnienia).
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A ja dodam od siebie, że ten helper powinien rozszerzać helper url i zwracać albo pusty ciąg (jeśli użytkownik nie ma uprawnień) lub to co zwraca helper url (jeśli użytkownik posiada uprawnienia). Nie zgodzę sie z Tobą - to niepotrzebne mieszanie odpowiedzialności. Spójrz na poniższe podejście:
Posiadasz większą kontrolę. Dodatkowo przy tym sposobie nie musisz się ograniczać do menu, ale także do pojedynczych linków tj. "edytuj", "usuń"; które prowadza do akcji wymagających pewnych uprawnień. Ważne, żeby posiadać helpery wykonujące jak najbardziej "atomowy" kod. Dzięki temu możesz tworzyć i proste jak i bardzo skomplikowane struktury. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Nie zgodzę sie z Tobą - to niepotrzebne mieszanie odpowiedzialności. Spójrz na poniższe podejście: Dlaczego? Jeśli chcesz zrobić link, który ma się wyświetlać tylko dla konkretnej grupy użytkowników nie musisz kombinować z if-ami, które zaciemniają kod. Po prostu używasz helpera i nie martwisz się o to, czy dany element menu ma się pokazać, czy nie. A jeśli nie chcesz rozszerzać helpera url, to możesz po prostu go zastosować wewnątrz swojego helpera. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
To dodaj do przykładu jeszcze z 10 linków i każdy trzymaj w takim if-ie. Od razu można się pogubić. Poza tym wszystkie zmiany w uprawnieniach powodują, że trzeba w każdym if-ie zmieniać warunek. A tak, wystarczy zmienić to w jednym miejscu - w helperze.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Linki linkami. Natomiast taki sposób jaki ty podajesz powoduje, że przeładowujesz helper funkcjonalnością - menu() wyświetla menu i tyle. Ty chcesz jeszcze wpakować odpowiedzialność czy w ogóle ma je wyświetlać.
Nie twierdzę, że mam robić drzewko ifów tylko, że w budowie samych helperów trzeba zachować umiar. ot co. |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Nie do końca pisaliśmy o tym samym. Ty pisałeś o całym menu, a ja o konkretnych linkach. Dlatego nie możemy dojść do porozumienia. Jeśli autor stworzy helper, który wyświetli lub nie (w zależności od uprawnień) elementy menu (linki), wówczas osiągnie to o co mu chodziło.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zawsze są jeszcze partiale. Nie wymagają dodatkowego helpera i posiadają korzyści płynące z mojego sposobu.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Rozbijanie problemu wyswietlania linkow, na pojedyncze helpery nie ma zadnego sensu, bo jest to nie wydajne (zobacz ile obiektow musisz powolac i wykonywac wielokrotnie czynnosci ktore mozna zrobic raz) i robi bajzel w pliku widoku.
uwazam tak jak LBO, ze $this->renderMenu() jest duzo lepszym sposobem. Choc wcale nie zgodze sie z tym, ze sprawdzamy dostep tylko do calego menu. Cytat Poza tym wszystkie zmiany w uprawnieniach powodują, że trzeba w każdym if-ie zmieniać warunek. A tak, wystarczy zmienić to w jednym miejscu - w helperze. nie prawda:
gdzie sa ify? bo ja ich nie widze (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) i mamy tylko jedna instrukcje sprawdzania uprawnien (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
No tak, ale cały czas kręcimy się w obrębie menu. A co jeśli trzeba stworzyć osobne linki, np edycja. Wówczas dla każdego linka trzeba będzie tworzyć helper. A o wydajność się nie martwię z dwóch powodów.
1. Jeśli stawiam aplikację na ZF, to jest to aplikacja kombajn, a nie wizytówka. 2. Wszystko co tylko można jest cache-owane. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hehe, mysle ze koles co zalozyl temat, ma juz odpowiedz (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
masz racje, czasem warto poswiecic wydajnosc na rzecz lepszej swobody w programowaniu skoro i tak to cachujemy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) uwazam ze twoje podejscie jest bardzo dobre jesli chodzi o o pojedyncze linki, ale uwazam ze moje jest lepsze jesli mowimy o zbiorze linkow luzno powiazanych z soba (np menu). Co szkodzi nam miec 2 helpery, do pojedynczow liknkow jak i do ich grupy? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie narzekajcie z tymi obiektami helperów, bo te są tworzone tylko raz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przynajmniej byływ czasach ~1.0 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Poprawcie mnie jeżeli się mylę, bo do ZF dawno nie zaglądałem.
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Dokładnie o to mi chodziło. Nie ma przecież obowiązku korzystać za każdym razem z helpera, który sprawdza prawa dostępu. Przecież nie każdy link prowadzi do strony z ograniczeniami.
Poza tym jeśli chodziłoby o menu, to też bym zrobił osobny helper do tego. Zapomniałem dodać po pierwszego punktu w poprzednim moim poście, że taka aplikacja stoi na potężnej maszynie, której nie straszny jest ZF (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) edit up Tak. Obiekt helpera jest tworzony tylko raz. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
to prawda raz, ale nie chodzilo mi tu akurat o same obiekty helperow, tylko obiekty wewnatrz helpera, np obiekt modelu, konfiguracji (oczywiscie moze nie byc zadnych obiektow), poza tym odwolywanie sie dziesiatki razy do helpera nie jest wydajne, po to ludzie robia cos takiego.
Ten post edytował qba_rox 16.01.2009, 12:53:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 01:37 |