Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rejestracja controllera jako moduł w MVC
GoldeNx3
post 9.02.2018, 19:57:58
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Witam


Tworze stronę internetowa na podstawie modelu MVC. W jaki sposób mogę zrobić, aby każdy controller był jako moduł, w sensie abym mógł go w jakiś sposób zarejestrować i wyświetlić listę modułów czyli stron w panelu admina a w tym panelu mógł dodać potem opcje włączenia i wyłączenia controllera aby użytkownicy nie mogli na nią wejść. Czyli jak kontrolować każdy controller przez panel?
Go to the top of the page
+Quote Post
Pyton_000
post 9.02.2018, 21:20:32
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Musisz mieć gdzieś listę kontrolerów. Obok true/false i tyle.

Przy wchodzeniu sprawdzasz czy jest na liście i jaką ma wartość. Domyślnie ustalasz że nie ma dostępu, dopiero jawne przypisanie true daje dostęp.

Albo BD albo plik jakiś, tak na prawdę co kolwiek.
Go to the top of the page
+Quote Post
GoldeNx3
post 9.02.2018, 21:28:36
Post #3





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Tak, tutaj nie ma problemu z tym. Tylko w którym miejscu stworzyć listę kontrolerów? W sensie nie mam pojęcia jak „otworzyć” pliki z kontrolerami bez ich wywołania. W autoloadzie dodaje tylko pliki z kontrolerami a w routingu je wywołuje. Ale wiadomo, wywołują się one pojedynczo w momencie wejścia na dany adres strony. Jak zrobić, aby od razu bez wywołania kontrolera one się dodawały do listy? Kurczę, ciężko mi opisać to co mam w głowie ale mam nadzieje, ze ktoś zrozumie.
Go to the top of the page
+Quote Post
b4rt3kk
post 9.02.2018, 22:08:54
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Zaimplementuj sobie coś w rodzaju acl. Tzn. trzymaj w bazie nazwy wszystkich kontrolerów (możesz również to rozszerzyć na metody), w osobnej tabeli grupy uprawnień, a w kolejnej która grupa ma uprawnienie do którego kontrolera (i akcji/metody). I później prostym zapytaniem sprawdzasz czy dany user może korzystać z danego kontrolera.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
GoldeNx3
post 9.02.2018, 22:33:36
Post #5





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Tak, ja wiem jak zablokować dostęp. Ale problem polega na tym jak zrobić listę kontrolerów i metod. W routerze wywołuje się kontroler jak wchodzi się na dana stronę, ale tylko będzie topojedynczy kontroler. Ale jak zrobić aby skrypt pobrał wszystkie kontrolery i metody za jednym razem? W autoloaderze pobieram z folderu kontrolerów pliki i includuje je, w tym momencie mogę pobrać kontrolery po nazwie plików i zapisać je np. W bazie ale jak pobrać dodatkowo metody z tych plików? Najgorsze jest to, ze ciężko mi to wytłumaczyć. Jutro podeśle kod jak to wyglada ale może do tego czasu ktoś odpowie na moje pytanie.

Ten post edytował GoldeNx3 9.02.2018, 22:34:28
Go to the top of the page
+Quote Post
b4rt3kk
post 9.02.2018, 22:39:17
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(GoldeNx3 @ 9.02.2018, 22:33:36 ) *
Tak, ja wiem jak zablokować dostęp. Ale problem polega na tym jak zrobić listę kontrolerów i metod. W routerze wywołuje się kontroler jak wchodzi się na dana stronę, ale tylko będzie topojedynczy kontroler. Ale jak zrobić aby skrypt pobrał wszystkie kontrolery i metody za jednym razem? W autoloaderze pobieram z folderu kontrolerów pliki i includuje je, w tym momencie mogę pobrać kontrolery po nazwie plików i zapisać je np. W bazie ale jak pobrać dodatkowo metody z tych plików? Najgorsze jest to, ze ciężko mi to wytłumaczyć. Jutro podeśle kod jak to wyglada ale może do tego czasu ktoś odpowie na moje pytanie.


A po co to pobierać? Aż tyle tego masz? Wpisz z palca do bazy. Jak już musisz to napisz sobie prosty skrypcki, który przeleci po wszystkich plikach w określonym katologu, otworzy je i przeleci po wszystkich metodach (użyj ReflectionClass).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
GoldeNx3
post 9.02.2018, 23:14:02
Post #7





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


W sumie masz racje, za bardzo kombinuje. Co prawda trochę tego jest ale nie będzie tragedii wpisać tego z palca. A jak w późniejszym czasie dodam jakiś kontroler to tez go mogę zawsze wpisać manualnie + mniejsze obciążenie zamiast sprawdzać każdy kontroler za każdym razem czy istnieje w bazie i dodawać go do bazy jeżeli on nie istnieje. Ale jeszcze pobawię się z reflectionclass, zawsze czegoś się nauczę, mimo wszystko bardziej byłbym usatysfakcjonowany jakby to wszystko odbywało się z automatu, z drugiej strony jak strona już będzie w 100% napisana to nie ma sensu za każdym razem sprawdzać czy dany kontroler istnieje w bazie kiedy wszystko już będzie w bazie. W sumie dobre rozwiązanie. Szukam sposobu na około a rozwiązanie znajduje się tak blisko ;d
Go to the top of the page
+Quote Post
b4rt3kk
post 10.02.2018, 00:02:28
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(GoldeNx3 @ 9.02.2018, 23:14:02 ) *
W sumie masz racje, za bardzo kombinuje. Co prawda trochę tego jest ale nie będzie tragedii wpisać tego z palca. A jak w późniejszym czasie dodam jakiś kontroler to tez go mogę zawsze wpisać manualnie + mniejsze obciążenie zamiast sprawdzać każdy kontroler za każdym razem czy istnieje w bazie i dodawać go do bazy jeżeli on nie istnieje. Ale jeszcze pobawię się z reflectionclass, zawsze czegoś się nauczę, mimo wszystko bardziej byłbym usatysfakcjonowany jakby to wszystko odbywało się z automatu, z drugiej strony jak strona już będzie w 100% napisana to nie ma sensu za każdym razem sprawdzać czy dany kontroler istnieje w bazie kiedy wszystko już będzie w bazie. W sumie dobre rozwiązanie. Szukam sposobu na około a rozwiązanie znajduje się tak blisko ;d


No raczej uprawnienia powinny być nadawane świadomie, więc z automatu to trochę kiepski pomysł. Co najwyżej admin powinien mieć dostęp do wszystkich metod wszystkich kontrolerów, ale to możesz dodać samą nazwę kontrolera z gwiazdką dla metod (czyli dla wszystkich danego kontrolera). Wg mnie nie powinno być to automatyczne działanie, a raczej przemyślane, co może kto wyświetlać, więc dodawane z palca.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
GoldeNx3
post 10.02.2018, 00:36:34
Post #9





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Chcialem po prostu sobie ułatwić i zrobić kontrolery na zasadzie pluginow które z panelu admina mogę włączyć i wyłączyć dla wszystkich użytkowników. Czyli dodaje nowy kontroler i automatycznie on ląduje w bazie razem z metodami. Ale dodawanie je z palca do bazy w sumie w miare rozwiązuje mój problem.
Go to the top of the page
+Quote Post
emillo91
post 7.04.2019, 21:28:52
Post #10





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

Ostrzeżenie: (0%)
-----


Sam aktualnie jestem na etapie projektowania aplikacji wykorzystującej coś na zasadzie pluginów. W pewnym momencie doszedłem do etapu , w którym musiałem odnieść się do danej akcji kontrolera danego pluginu. Do akcji odnoszę się w ten sposób, że w bazie danych trzymam ścieżki do katalogów z pluginami i aby wywołać dany plugin to zamieniam ścieżkę na namespace i doklejam do niej nazwę klasy pluginu. Natomiast do akcji odnoszę się poprzez pobranie wszystkich metod publicznych i poprzez filtrowanie sprawdzam czy dana akcja istnieje w tym pluginie/ kontrolerze. Niestety nie da się chyba wyszukać akcji bez wywołania obiektu. Mówię oczywiście o routingu bez używania informacji zapisanych w pasku url czyli ?action=kontroler&method=metoda
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 03:33