![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem. Otóż nie mogę wyważyć w jaki sposób odpalać te kontrolery we frameworku, mvc. Pierwszy sposób zawodzi, gdy znajdzie się w Managerze metoda z walidacją, ponieważ muszę użyć instrukcji if by sprawdzić, czy została wywołana i jeśli tak wywołać również walidację. Natomiast druga zawodzi w momencie, gdy ktoś chce złamać zabezpieczenia, bowiem metodę widać w adresie strony. Proszę o rady. Przejrzałem frameworki, ale nie znalazłem odpowiedzi.
Adres:
1) metoda pierwsza
2) metoda druga
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tym, jaka akcja dla danego kontrolera powinna zostać wykonana zajmuje się front controller.
Jeżeli nie ma żądanego kontrolera lub brakuje akcji dla danego kontrolera, to powinien (front controller) w tym miejscu zwrócić wyjątek. Coś w tym stylu, załóżmy, że metoda uruchamiająca odpowiednią akcję nazywa się run:
A kod kontrollera wygląda np. tak:
Radzę zastosować zamiast takich urli: www.site.com/index.php?module=user&action=shownotactive&other=1_2 coś takiego: www.site.com/user/shownotactive?other=1_2 wygląda o wiele ładniej. Wartość parametru other powinna być dostępna z obiektu Request, a nie przekazywana jako parametr metody akcji. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie, pomogło
Mógłbyś wytłumaczyć budowę requestu w tym przykładzie ? Czy getRequest powinien zwracać referencję do tablicy ? Ten post edytował cer98 18.09.2011, 14:41:24 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Metoda getRequest() powinna zwracać obiekt klasy Request, która zawiera informacje nt. aktualnego requestu, czyli jej budowa może wyglądać mniej więcej tak:
Oczywiście to tylko sugestia, bo można spokojnie to rozbudować. Dodatkowo pozostaje decyzja, czy parametry są przekazywane, czy sam obiekt dobiera się do nich z tablic globalnych. To samo tyczy się nazw akcji i kontrolera. Czy pobierać je wewnątrz obiektu klasy, czy może przekazywać. Jeżeli chcesz to wszystko ustawiać to raczej proponowałbym takie dane przekazywać w konstruktorze, a nie za pomocą seterów, ponieważ logika podpowiada, że po utworzeniu obiektu klasy request raczej nie powinien się zmienić. Temat można rozwinąć, jeżeli zakładasz również obsługę kodu z linii poleceń. W takim wypadku doradzałbym wyciągnięcie klasy bazowej (abstrakcyjnej) wyżej i stworzenie Request_HTTP i Request_CLI lub coś w tym stylu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 00:37 |