![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jest panel admina. Aby uniezależnić warstwę logiki od prezentacji, menu powinno być wyświetlane w szablonach. Jednak nie wszystkie moduły są dostępne dla każdego użytkownika - to zależy od jego uprawnień. Jeśli gdzieś nie ma dostępu, po prostu nie pokazujmy mu linku. Jak to rozwiązać?
1. Sposób. Pozycje zależą od warstwy logiki Warstwa logiki narzuca budowę menu. Kod PHP: Szablon:
+ Po dodaniu lub usunięciu modułu nie trzeba edytować szablonu skórki + Można wprowadzić możliwość zmiany kolejności elementów w menu - Zmiana układu menu jest praktycznie niemożliwa - W przypadku podziału na bloki wpłynie negatywnie na wydajność Można posegregować linki w grupy, co ułatwia zmianę układu menu (np. na rozwijane menu), ale wciąż są duże ograniczenia (np. rozwijane menu wielopoziomowe), więcej obliczeń w warstwie logiki i podwójna pętla w szablonie:
2. Sposób. Wszystko w szablonach. Nie budujemy menu w warstwie logiki. Wszystkim zajmują się szablony: + Można dowolnie zmodyfikować układ menu w szablonie + Warstwa logiki nie narzuca nam konkretnego układu i kolejności - Trudniejsza edycja szablonu - elementy warstwy logiki w szablonie - Kiedy dodamy lub usuniemy moduł panelu admina, trzeba poprawić szablon wszystkich skórek! Jak widać, oba rozwiązania mają swoje wady. Które jest najbardziej optymalne i elastyczne według was? -------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
Cytat - Zmiana układu menu jest praktycznie niemożliwa Co przez to rozumiesz? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 208 Pomógł: 28 Dołączył: 9.08.2004 Skąd: Stargard Ostrzeżenie: (0%) ![]() ![]() |
Witam,
ja stosuję oba podejścia, ale w różnych miejscach: 1. dla menu strony do widoku trafia tablica z elementami tylko dla danego użytkownika (dotyczy to aplikacji i autorskiego CMS, który generuje strukturę menu biorąc pod uwagę uprawnienia bieżącego użytkownika; uważam, że wygodniej pobierać częściowo odfiltrowane dane z bazy i obrabiać je w PHP niż w szablonach) 2. dla przycisków na stronie stosuję zmienne z isUprawnienieA, isUprawnienieB,... Pozdrawiam -------------------- errare humanum est
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Co przez to rozumiesz? Załóżmy, że zamiast listy chcemy menu rozwijane: Treść | Społeczność | Pomoc | Ustawienia | Rozszerzenia Warstwa logiki przekazuje do szablonu tablicę 2D z dostępnymi modułami: Artykuły | adres do modułu | klasa_art Galeria | adres do modułu | klasa_gal ...itd... Nie ma podziału na grupy. Otrzymujemy płaską listę. Problem można obejść, dzieląc moduły na grupy. Wciąż jest to sztywny podział. Warstwa logiki przekazuje do szablonu tablicę 3D z dostępnymi modułami w oddzielnych grupach. A teraz w menu rozwijanym chcemy dodać własne linki, np. "Dodaj artykuł". Jedno kliknięcie mniej. Można wstawić go na sztywno, sprawdzić uprawnienia w szablonie, ale zaraz, przecież my wyświetlamy menu w pętli! Poniższy kod tylko wprowadza zamieszanie: Kod <!-- IF nazwa_modulu IS "Artykuły" -->link<!-- ELSEIF nazwa_modulu IS "Pliki" -->inny link<!-- END --> A teraz chcemy zmienić kolejność linków lub wymyślić inny układ. Całkowicie przebudować interfejs. Na nic zda się lista modułów przekazana przez warstwę logiki. -------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 06:47 |