Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
Witam,
dla większości to pewnie będzie banał ale ja dopiero zaczynam z tym przygodę. Chcę zbudować formularz kontaktowy w oparciu o wzorzec MVC. Nie wiem tylko gdzie mają być przekazywane dane z formularza: do kontrolera czy do modelu. Czy przekierowanie danych bezpośrednio z formularza na klasę poprzez znacznik <form> jest poprawne? Pierwsze co mi przyszło na myśl to zbudowanie pliku(ale nie opartego na klasie) który by przejmował dane z tablicy $_POST a następnie dopiero przekazywał je do odpowiedniej klasy aby dokonać walidacji itp. Wiem, że pewnie mi ktoś poleci jakiś framework ale ja chcę poznać zasadę działania od podszewki. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
1. Formularz to właśnie model.
2. Dane do przekazania formularzowi "przyjdą" w żądaniu, więc będziesz musiał je mu przekazać. Pierwszy uruchomiony zostaje kontroler, który tworzy formularz, więc to on przekaże mu dane. Skończysz z czymś w stylu:
Ten post edytował Crozin 8.02.2011, 11:48:01 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
a wyświetlenie i zdefiniowanie formularza nie powinno się znajdować w widoku?
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Definicją formularza jest... formularz. Co do jego wyświetlania - raczej ciężko zrobić to gdzie indziej.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
Czyli formularz ma być oddzielną klasą?
|
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Tak, zazwyczaj tak się właśnie to robi. Wszystko, co da się nazwać i co powinno odpowiadać za jakieś działania może być obiektem.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
a posiada ktoś może jakiś przykładowy skrypt formularza na wzorcu mvc?
Bo jakoś teraz nie mogę sobie tego wyobrazić (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Formularz z zend framework:
W kontrolerze tworzysz obiekt formularza i przekazujesz go do widoku:
Formularz sam generuje standardowy HTML, można też podpiąć do niego własny widok. Odbieranie, walidacja, karmienie formularza danymi odbywa się poprzez zestaw metod oczywiście. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Symfony2 ma całkiem ciekawie rozwiązany mechanizm obsługi formularzy.
|
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Aktualnie jestem w trakcie wdrażania się w symfony2, ale bez ORMa. Nie do końca to tam super wygląda, bo jednak fajniejszy był poprzedni FW i trochę szkoda, że tak wiążą formy z modelami. Trochę nadmiarowej pracy trzeba wykonać.
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
ok, mam klasę która generuje formularz, wiem że z poziomu kontrolera ładuję się ją do widoku.
Tam ta klasa wyświetla formularz. Ale co się dzieje dalej - a mianowicie po kliknięciu przycisku submit? Akcja ma wskazywać na model i również w modelu dokonywana jest walidacja? Ten post edytował qbas-s 8.02.2011, 14:26:49 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Model to model, wszystkie żądania trafiają do index.php, potem do jakiegoś dispathera i tak dalej aż do wybranej metody:
Kontroler sprawdza, czy wysłano tablicę POST i jeśli tak, to wsadza te parametry do metody isValid, która wykonuje walidatory dodane do formularza. Walidatory dodaje się podobnie, jak inne obiekty:
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
Podjąłem próbę wykonania formularza opartego o model MVC - oceńcie czy prawidłowo:
index.php - kontroler
View.php - widok
form.php - model
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Zanim weźmiesz się za MVC, poducz się podstaw OOP: http://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialności
|
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
Zanim weźmiesz się za MVC, poducz się podstaw OOP: http://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialności "Nigdy nie powinno być więcej niż jednego powodu do modyfikacji klasy" Ale jak to się odnosi do mojego kodu? Myślałem, że każda klasa wykonuje to co do niej należy.... |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Spróbuj sobie odpowiedzieć co robią poszczególne obiekty, za co są odpowiedzialne. Jeżeli w odpowiedzi użyjesz spójnika "i" to już masz odpowiedź co jest nie tak.
|
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%)
|
Czy teraz formularz nadal zawiera błędy? Index.php - kontroler
form.php - model
view.php - widok
val.php - klasa odpowiedzialna za walidację
Ten post edytował qbas-s 9.02.2011, 23:35:24 |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 16:45 |