Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MVC + $_POST, piekło?
IMP
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 20.08.2007

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


Witam

Temat pewnie nadmiernie eksploatowany jednak nie potrafię znaleźć solucji. Jak jeszcze przykłady obsługi $_GET znalazłem tak nie jestem w stanie ani sobie wyobrazić ani znaleźć takich przykładów dla $_POST. Chciałbym żebyście mnie nakierowali bo zwątpiłem (IMG:style_emoticons/default/winksmiley.jpg) Aby nie odbiec zabardzo od idei MVC action w formularzu powinien wskazywać na index.php. Tylko co dalej? Jak kontroler ma odebrać dane i wybrać odpowiedni widok? Jak to estetycznie połączyć w całość?

Pozdrawiam

Go to the top of the page
+Quote Post
Luneth
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Było: Temat: MVC formularz, filtracja, walidacja, autoryzacja...
Action wskazuje na index.php/nazwamodułu no i w tym module, najczęściej w konstruktorze kontrolera zachodzi sprawdzenie czy otrzymano żądanie POST, jak otrzymano to kontroler zleca wykonanie akcji i na koniec robi przekierowanie, zakładając że np coś dodajesz do bazy (IMG:style_emoticons/default/winksmiley.jpg)

1. Zostaje wysłane żądanie POST.
2. Kontroler bierze sobie widok (tworzy zmienną wskazującą na jego instancję, albo sobie rozszerza klasę widoku, jak kto woli i planuje rozbudowywać cały system, wzorce są wszelakie)
3. Kontroler kojarzy model z widokiem (przekazując mu instancję wybranego modelu)
4. W konstruktorze określono, że user wysłał żądanie POST; zostaje wykonana filtracja/walidacją wysłanych danych, jeśli wszystko poszło ok - kontroler uruchamia daną akcję
5. Zakładając, że akcja została wykonana bez wyrzucenia żadnego wyjątku, kontroler robi przekierowanie.

W modelu zapytania do bazy, zwrócenie gotowych tablic, w widoku kod formularza, cały html no i oczywiście zakładając, że widok jest samoświadomy - pobranie danych z modelu i wsadzenie pól w kod html.

Voila. Jeśli źle to proszę mnie poprawić (IMG:style_emoticons/default/biggrin.gif) (jakieś kwiatki, braki składni wybaczcie - późno już... (IMG:style_emoticons/default/biggrin.gif) )

Ten post edytował Luneth 15.08.2010, 01:50:03
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Szczerze to nie mam pojęcia w czym może być problem. Czemu formularz miałby wskazywać na index.php? Czym POST różni się od GETa? Jak kontroler ma wybrać odpowiedni widok? Proste: na podstawie sobie tylko znanych kryteriów - dane z POST/GET mogą być częścią ów kryteriów.
Go to the top of the page
+Quote Post
Luneth
post
Post #4





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Może autorowi chodziło o samą wzorcową estetykę, bo gdzie metod nie wsadzisz i jakoś im parametrów nie przekażesz - to wszystko będzie działać, autor tez bardzo uogólnił swój problem, nie napisał czy chodzi np o jakiś system komentarzy, autoryzację a może jakiś kalkulator... (IMG:style_emoticons/default/biggrin.gif) Czemu formularz wskazuje na index.php? Może chodziło mu o to: index.php/news/ (IMG:style_emoticons/default/winksmiley.jpg) Generalnie wszystkie żądania tam trafiają.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Na dobrą sprawę dane z POST/GET/COOKIE - to po prostu kolejny model(e).
Cytat
Czemu formularz wskazuje na index.php? Może chodziło mu o to: index.php/news/ Generalnie wszystkie żądania tam trafiają.
Gwoli ścisłości: to nie ma nic do MVC - kierowanie wszystkiego w jedno miejsce to założenie Front Controllera, nie MVC.
Go to the top of the page
+Quote Post
Luneth
post
Post #6





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Masz rację, wszakże front controller często towarzyszy aplikacjom opartym na wzorcu MVC (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Luneth 15.08.2010, 03:54:58
Go to the top of the page
+Quote Post
IMP
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 20.08.2007

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


Ciężko mi sprecyzować, ale spróbuje bo widać inaczej się nie da. Chce napisać front kontroler z prawdziwego zdarzenia. Dla przykładu.
Mam wiele formularzy na stronie, głównie znajdujące się w panelu administratora. Nie chce dla każdego takiego Form'a tworzyć nowego pliku .php który będzie go obsługiwał. Co za tym idzie chce wszystkie akcje z Form'ów kierować na index.php. I teraz nie wiem jak podejść do pisania ww kontrolera. W jaki sposób kontroler ma rozpoznać z jakiego formularza pochodzą dane i jaki model do nich dobrać? Proszę jak możecie posiłkujcie się przykładowymi kawałkami kodu. To do mnie przemawia najlepiej.
Go to the top of the page
+Quote Post
Luneth
post
Post #8





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


  1. if(isset($_POST['nazwa_formularza_send']){
  2. // zawartość
  3. }


Każdy formularz niech ma inną nazwę buttonu wysyłającego/zatwierdzającego i po nim rozpoznawaj. Albo zrób switcha na zmienną $_SERVER['PATH_INFO'] i wysyłaj w action takie żądania: index.php/news/add, index.php/news/edit i zgarniaj to switchem. Model wybieraj w zawartości instrukcji warunkowej.

Ten post edytował Luneth 15.08.2010, 12:33:20
Go to the top of the page
+Quote Post
IMP
post
Post #9





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 20.08.2007

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


Czyli ogólnie za wiele sobie na wyobrażałem po niektórych lekturach (IMG:style_emoticons/default/haha.gif) To jest podejście z że tak to ujme przyszłośćia? Nic bardziej Pro nie da się namotać?

Tak czy siak leci "Pomógł" (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Luneth
post
Post #10





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Zawsze można bardziej namotać niż jest potrzebne (IMG:style_emoticons/default/biggrin.gif) Ja bym w Twoim przypadku zrobił tak jak napisałem, a jeśli ktoś inny ma tutaj bardziej "Pro" pomysł, to pewnie się tu wypowie (IMG:style_emoticons/default/smile.gif)
Czy z przyszłością? Myślę, że tak, jak będziesz chciał sobie inaczej wszystko rozłożyć na poszczególne kontrolery dla każdego formularza to uprościsz front controller a resztę przełożysz do tych 'mini' kontrolerów, nie będzie trzeba wszystkiego przepisywać od nowa (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Luneth 15.08.2010, 13:07:28
Go to the top of the page
+Quote Post
skrypta
post
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 1.07.2009

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


zerknij na przyklad uproszczonego front controllera
http://skrypta.pl/skrypty-php/budujemy-wla...esc-1-podstawy/

nie sadze abys musial wprowadzac inna obsluge dla POST i GET, wystarczy to zrobic na REQUEST chyba ze masz na tyle szczegolny przypadek ze musisz wiedziec jaka metoda do ciebie trafily dane, ja osobiscie nie lubie jak moj front controller decyduje o podjeciu wszystkich akcji, raczej kieruje sterowanie z front controllera do kontrolera w ktorym w konstruktorze moge nadpisac funkcjonalnosc i stamtad pokierowac do odpowiedniej akcji, oczywiscie wszystko zalezy od specyfiki twojego systemu - jak napiszsz uniwersalny front controller to szybko zauwazysz ze kilka rzeczy ci w nim przeszkadza i cie ogranicza (IMG:style_emoticons/default/smile.gif) ) ale pisanie to jedyna droga do nauki

pozdr
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 Aktualny czas: 7.10.2025 - 18:08