![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 15.10.2009 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem w trakcie realizacji mojej pierwszej aplikacji w PHP opartej o MVC. Można powiedzieć, że opieram się o szkielet szkieletu TinyMVC - ale zmodyfikowałem go nieco .... i zaczynam mieć wyrzuty sumienia ![]() Problem jest chyba w tym, że to jest na tyle prosta aplikacja (panel zarządzający firewallem na Linuxie), że staram się na siłe coś urozmaicać a tu wszystko to 3 klasy na krzyż i w każdej po 1-2 metody :/ Czy może być tak, że zrobiłem sobie 3 klasy modelu: -taka która zna polecenia ssh ( łączy mnie, autoryzuje, obsługuje błędy i oferuje kilka metod typu: wyświetl coś z systemu, czy zrób coś w systemie - ale nie ma żadnych konkretnych metod typu "weź plik A, przenieś go do folderu B i usuń folder C) -taka która obsługuje sqlite ( łączenie z bazą , błędy, kilka podstawowych metod, rozłączanie w destruktorze) -taka która obsługuje pliki (sprawdzenie praw, zapis, odczyt, obsługa błędów) Po jednej klasie kontrolera akcji na każdą zakładkę np: statystyki ruchu, reguły firewalla, użytkownicy itd) Widokiem natomiast zajmuje się u mnie smarty. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Mam wrażenie, że za dużo robią kontrolery, a za mało model .... (wiem, że teoria mówi, aby np jedna klasa modelu obsługiwała jedną tabelę lub zespół tabel w BD... ale ja będę miał pewnie z 3 tab w bazie i to cala aplikacja) Czy mogę zrobić tak, że wchodzę na jakąś zakładkę i wołam AC tej zakładki z domyślną metodą "index", która zawsze w mojej aplikacji pobiera jakieś dane z systemu bądz bazy i każe wyświetlić w smarty. To co zostało wyświetlone to np lista userów, która od razu posiada modyfikowalne pola i linki oraz przyciski formularza. Klikam np na link href=/users/delete i wołam ten sam AC-users i jego metode "delete" --- teraz czy mogę w metodzie delete zmodyfikować bazę i odwołać się $this-> do domyślnej metody "index", która pobierze dane z BD i wyświetli je już w zmodyfikowanej postaci czy poprostu metoda delete powinna przygotowywać widok do wyświetlenia ? Będe bardzo wdzięczny za pomoc Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Nie przejmuj się rozmiarem aplikacji. Jak nauczysz się pracować z wzorcem MVC na małych projektach, to z dużymi będzie Ci już łatwo.
Co do zadań wykonywanych przez kontroler i model - niedawno był wątek na forum, musisz poszukać, gdzie były dyskutowane różne warianty implementacji. //edit to ten topic: Temat: MVC Kontroler gdzie
Powód edycji: [blooregard]:
-------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 6 Dołączył: 22.10.2007 Skąd: /dev/null Ostrzeżenie: (0%) ![]() ![]() |
Czy mogę zrobić tak, że wchodzę na jakąś zakładkę i wołam AC tej zakładki z domyślną metodą "index", która zawsze w mojej aplikacji pobiera jakieś dane z systemu bądz bazy i każe wyświetlić w smarty. To co zostało wyświetlone to np lista userów, która od razu posiada modyfikowalne pola i linki oraz przyciski formularza. Klikam np na link href=/users/delete i wołam ten sam AC-users i jego metode "delete" --- teraz czy mogę w metodzie delete zmodyfikować bazę i odwołać się $this-> do domyślnej metody "index", która pobierze dane z BD i wyświetli je już w zmodyfikowanej postaci czy poprostu metoda delete powinna przygotowywać widok do wyświetlenia ? Hej, moim zdaniem po akcji delete powinienes po prostu zrobic redirect :], tak jest najprosciej, czyli np: tak jak napisales, klikasz w link href=/users/delete, controller obsluguje żądanie (kasuje, przenosi, whatever) ale ze w akcji delete zazwyczaj nie ma czego wyswietlac to najlepiej jest zrobic redirect na liste userów na końcu :] Pozdro -------------------- Zobacz i pośmiej sie na ifixed.it
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 15.10.2009 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za zainteresowanie.
Z tym redirectem otrzymam dokładnie ten sam efekt co z $this->index(); Czy zastosowanie redirecta czy index będzie bardziej "eleganckie"? Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 6 Dołączył: 22.10.2007 Skąd: /dev/null Ostrzeżenie: (0%) ![]() ![]() |
prawie taki sam efekt,
adres url bedzie taki na ktory zrobisz redirect, to co ty napisales to jest forward. mysle ze w tym wypadku elegantszym rozwiazaniem jest redirect bo w przypadku $this->index() url dalej bedziesz mial users/delete a widok juz liste. -------------------- Zobacz i pośmiej sie na ifixed.it
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 15.10.2009 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 6 Dołączył: 22.10.2007 Skąd: /dev/null Ostrzeżenie: (0%) ![]() ![]() |
dokładnie tak jak napisaleś
ale jak chcesz to mozesz olac zmienna $host i uzyc tylko url względny starczy -------------------- Zobacz i pośmiej sie na ifixed.it
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Z tym host morgan bym zostawił. Niestety składnia uproszczona jest według standardów błędna i zdarzyło się w mojej pracy, że inna konfiguracja sprawiała, iż taki header nie działał.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 14:20 |