Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MVC + $_POST, piekło?
IMP
post 14.08.2010, 23:46:57
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 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
 
Start new topic
Odpowiedzi (1 - 10)
Luneth
post 15.08.2010, 01:41:26
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 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ć biggrin.gif (jakieś kwiatki, braki składni wybaczcie - późno już... biggrin.gif)

Ten post edytował Luneth 15.08.2010, 01:50:03


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
Crozin
post 15.08.2010, 01:45:31
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 15.08.2010, 03:10:41
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... biggrin.gif Czemu formularz wskazuje na index.php? Może chodziło mu o to: index.php/news/ winksmiley.jpg Generalnie wszystkie żądania tam trafiają.


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
Crozin
post 15.08.2010, 03:42:23
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 15.08.2010, 03:54:10
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 winksmiley.jpg

Ten post edytował Luneth 15.08.2010, 03:54:58


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
IMP
post 15.08.2010, 11:31:49
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 15.08.2010, 12:26:59
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


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
IMP
post 15.08.2010, 12:56:28
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 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ł" smile.gif
Go to the top of the page
+Quote Post
Luneth
post 15.08.2010, 13:05:38
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 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 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 winksmiley.jpg

Ten post edytował Luneth 15.08.2010, 13:07:28


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
skrypta
post 15.08.2010, 17:57:22
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 smile.gif) ale pisanie to jedyna droga do nauki

pozdr


--------------------
Skrypta.pl - Blog developerski PHP, MySQL, AJAX, Pozycjonowanie SEO, optymalizacja
Kopruch.pl - T-shirts i koszulki dla webmasterów, programistów i administratorów
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: 14.08.2025 - 03:55