![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
1. Czy trudno napisać funkcję do odbierania i zwracania danych wysłanych z POST i GET ? Miałaby za zadanie odebrać wszystkie wysłane dane metodą POST i GET, przekazać w tablicy lub określoną, którą zadeklaruję. Potrzebuję tego do walidacji formularza.
2. Drugie pytanie w kontrolerze deklaruję metody, jak je zablokować, żeby po wejściu na stronę nie widzieć, że formularz jest sprawdzony i wysypało błędy, tylko pusty formularz ? Myślałem, żeby wstawić warunek dla wszystkich metod walidujących, jeśli dane zostały wysłane postem, to rozpocznij walidacje, jeśli nie nic nie rób, wyświetl formę. Ale jak to robi się profesjonalnie w MVC? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Z taką wiedzą na zabieraj się za MVC. Poćwiczyć czyste PHP, a potem wróć do MVC itd. Bo pytając nas jak odebrać GET i POST, to nie połapiesz się w MVC.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 24.05.2011 Skąd: Polska - Łódź Ostrzeżenie: (0%) ![]() ![]() |
1.
Kod <?php printf($_POST); printf($_GET); ?> Wyświetla dane post i get w formie tablicy Ten post edytował Adikso 5.08.2011, 19:42:29 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Po prostu chce uniknąć takiej sytuacji, że mam syf w metodzie w pierwszym argumencie, mam błąd notice, którego mogę się pozbyć jedynie wstawiając null, a mogę opcję przekazać inaczej. Jak tą metodę uruchomić po wysłaniu formularza ? Ten post edytował cer98 5.08.2011, 19:46:50 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możesz też zrobić isset($_POST) to wtedy sprawdzisz czy zmienna $_POST jest ustawiona.
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ile się uczysz PHP? Może coś tam by działało, ale mnóstwo błędów popełniasz:
1. W klasie używasz tablicy $_POST - takich rzeczy się nie robi. Możesz przekazać jako parametr tablicę POST do jakiejś metody. 2. Pola metod najczęściej są prywatne, aby nie było do nich dostępu bezpośrednio przez obiekt - do tego służą gettery i settery. -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Czytam książki, piszę przykłady, może rok uczę się. Zmieniłem na private i też działa, zatem czy moja klasa nie nadaje się do powszechnego użytku ?
Czy powinienem wysyłać formularz do skryptu, czy na tą samą stronę ? Jeśli do skryptu, to z przekierowanie ? Jak to wygląda we wzorcach ? Ten post edytował cer98 5.08.2011, 20:30:32 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A wiesz chociaż czemu działa jak zmieniłeś na private?
Nie chcę tutaj nie doceniać Twojej pracy, ale zanim weźmiesz się za wzorce i w ogóle MVC (też wzorzec), to zajmij się podstawami. Jakoś nie wierzę, że rok się uczysz ![]() Rozumiem, że możesz mieć pytanie odnośnie programowania obiektowego - sam uczę się jak go stosować. Ale takie podstawy jak odebrać POST czy GET to jeszcze za wcześnie na obiektówkę czy wzorce. Ten post edytował IceManSpy 5.08.2011, 20:45:11 -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zwracam to, co chcę, czyli odebrałem dane w metodzie, pole jest private, więc nie ma dostępu do niego spoza klasy. Nie będę mógł również go dziedziczyć, chyba że jest protected, ale nie będę mógł zmienić. To nie funkcja narzędziowa, tylko do odbierania danych, więc mam przekazać tablicę post do funkcji w metodzie i zwrócić element tablicy post ? Czyli metoda będzie miała 2 argumenty tablica globalna post i to co chcę zwrócić ? Chyba dobrze zrozumiałem to, co piszesz bo ja chcę stworzyć metodę do odbioru danych z tablicy post, a w klasie nie mogę użyć POST ?
Nie powinno być ważnym ile się uczę, tylko ilę potrafię. Teraz pokaż mi na przykładzie __set i __get jak odebrać dane z tablicy globalnej POST
Ten post edytował cer98 5.08.2011, 21:11:45 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przypisywanie i odczytywanie (pisane na szybko, więc może być jakiś mały error
![]()
W tej klasie może być dowolna tablica - POST, GET, coś z bazy danych, z XML, co chcesz. Ten post edytował IceManSpy 5.08.2011, 21:20:36 -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym rozwinąć klasę o metodę, która przypisze mi wszystkie zmienne, jest sens (albo przekazać tablicę POST przez konstruktor do klasy Validate i w __construct przypisać zmienne) ?
To błąd:
Mam jeszcze jedno pytanie, ale to później. Pomocy ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie za bardzo mogę się w tym wszystkim połapać. Chodzi ci o to, że jeżeli twoja tablica $_POST wygląda tak:
to chcesz uzyskać coś takiego:
Jeżeli tak, to użyj http://www.php.net/manual/en/function.extract.php No i wsadź to sobie w jakąś metodę. -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że to wina podziału, walidacja powinna odbywać się w kontrolerze.
Ta klasa to model, do walidacji więc myślę, że kontroler, czyli wywołane metody powinny być wszyte w model. Ponieważ kontroler odbiera wszystkie akcje użytkownika i uruchamia metody z modelu oraz odpala widok. Błędy to zwykła tablica, więc mogę przesłać do widoku. W widoku miałbym tylko formę i błędy z wypełniania. Błędy wysłałbym przez GET, potem serialize i unserialize ? Dobrze rozumiem ? p.s. Ta funkcja jest kompatybilna z PHP5, więc powinna działać. Ten post edytował cer98 5.08.2011, 22:52:31 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 8 Dołączył: 28.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
dude, źle się za to zabierasz, poza tym mam nadzieję że to 98 to nie jest twoja data urodzenia
![]() Cytat Myślę, że to wina podziału, walidacja powinna odbywać się w kontrolerze. nie wiem czy dobrze Cię rozumiem, ale cała walidacja powinna być w modelu nie w kontrolerze, w kontrolerze tylko sprawdzasz czy walidacja przeszła czyli np.
a już pomijając wszystko, to ja Ci proponuje ściągnij sobie jakieś frameworki oparte na MVC ja Ci polecam Kohane, osobiście m.i.n jego używam i jest w sam raz do nauki tego akurat wzorca. Generalnie powinieneś całą logikę trzymać w modelu, chociaż fakt że to nie zawsze wychodzi. |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Kto mi może powiedzieć, czy ta serializacja to dobry pomysł ?
Możesz mi powiedzieć Kohana to jaki wzorzec ? Do sprawdzenia, czy wszystko gra użyję allClear(); Ten post edytował cer98 5.08.2011, 23:18:33 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dalej masz publiczny $nick, którego nawet nie wykorzystujesz.
Nie bierz się za wzorce jak nawet nie wiesz co jest czym. Zabierasz się za to jak do strzelania z CKMu, nie potrafiąc nawet strzelić z pistoletu (nawet takim na kulki - bo pytasz o proste operacje na GET i POST). Poćwicz sobie trochę obiektówkę. Zrób sobie klasę do walidacji, gdzie będziesz np walidował imię, maila czy datę (przy okazji możesz poćwiczyć wyrażenia regularne). A potem wykorzystaj to w innych metodach. Dzięki temu poznasz działanie programowania obiektowego i będzie Ci dużo łatwiej wskoczyć w MVC. Ogólnie rzecz biorąc modele służą do operacji na danych. Widok tylko wyświetla coś tam, a kontroler łączy widok z modelem. To tak w maksymalnym skrócie. Frameworki MVC: Koahana, Symfony, Zend, Code Igniter, Yii. Ten post edytował IceManSpy 5.08.2011, 23:37:40 -------------------- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
proxy będzie tu dobrym wzorcem
http://www.oodesign.com/proxy-pattern.html Ten post edytował cer98 5.08.2011, 23:48:13 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 8 Dołączył: 28.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
pytasz się nas czy stwierdzasz, mam wrażenie że ty nie szukasz pomocy tylko poparcia twojego myślenia. To nie jest problem wzorców tylko tego że ty chcesz ich używać nie znając nawet logiki ich działania. Napisałem Ci wyżej co ja sądzę.
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A znasz wzorzec Inheritance ?
Ten post edytował IceManSpy 6.08.2011, 00:19:47 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:17 |