Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC+Smarty+Weryfikacja formularza
Forum PHP.pl > Forum > PHP
Elbacer
Zrobiłem engine strony na wzorcu MVC i używam w nim Smarty i teraz mam pytanie jak w takim układzie zrobić weryfikacje formularzy. Czy po stronie engine stworzyć formularz i wysłać gotowy oraz sprawdzony do Smarty czy wszystko odnośnie tworzenia i weryfikacje formularzy robić przy pomocy Smarty?
Proszę o radę.
Lonas
Po stronie kontrolera a do widoku przesylasz wynik
Elbacer
Tylko w ten sposób szablon nie da możliwości zmiany układu pól formularza itp. jak bym chciał layout zmienić.
Zyx
Weryfikacja, obsługa - po stronie kontrolera. Wyświetlanie - w warstwie widoku. W Smartym będziesz musiał się napocić nieźle, by osiągnąć taki rezultat, ponieważ ten system szablonów nie ma żadnych narzędzi pomocnych przy obsłudze formularzy. Niestety nie potrafię Ci powiedzieć, czy jest to nawet wykonalne zadanie. We frameworkach stosuje się sposób podany przez Lonasa, ponieważ PHP ma podobne problemy z odpowiednim oddzieleniem jednego od drugiego. Jeśli chcesz mieć większą swobodę, zainteresuj się Open Power Template'm, a konkretniej mechanizmem komponentów, który on oferuje.
Elbacer
Widok to jest to samo co szablon? Bo widok tylko wyświetla dane, a nie się nimi bawi raczej, a jak zrobię weryfikację z poziomu szablonu powiedzmy, że nawet używając Open Power Template to jest to zgodne z MVC?
W skrócie, szablon tylko powinien wyświetlić to co dostał czy może robić coś więcej?
Lonas
Wlasciwy kod programu jest w kontrolerze, przetwarzasz dane a wynik wysylasz do widoku. Tak widok to to samo co szablon
Zyx
Gdzie ktoś Ci cokolwiek napisał, żeby weryfikację formularza robić po stronie widoku? Po stronie widoku masz to ładnie wyświetlać, weryfikacja zawsze powinna odbywać się w kontrolerze.
bim2
Hmm, zastanawialiście się kiedyś nad czymś takim:
1. W formularzu w inpucie podaje jaka ma być walidacja <input type="text" error="noempty minlength[3] maxlength[50]" name="name" />
2. Php przy parsowaniu szablonu sprawdza sobie te błędy, dodaje JS i zdarzenia na onsubmit, i dodaje do sesji jakie dane ma sprawdzić.
3. Jak wyślemy, to sprawdzamy co lezy w sesji. Sprawdzamy teraz po stronie php (bo js można obejść). Jak błąd przekazujesz do do kalsy validate.
4. Klasa sprawdza czy ten sam formularz jest, jak są błedy dodaje divki przy formularzu smile.gif Divki bezinwacyjne oczywiście smile.gif
Crozin
@bim2: uważasz, że widok - miejsce, gdzie pracować mogą nie tylko programiści, ale i koderzy czy jacyś "nie od kodu" jest dobrym miejscem na przechowywanie konfiguracji zabezpieczeń?
Moli
Cytat
1. W formularzu w inpucie podaje jaka ma być walidacja <input type="text" error="noempty minlength[3] maxlength[50]" name="name" />

A walidator się nie posypie błędami ?

ps. Fajnie to jest zrobione w Zend Form
http://framework.zend.com/manual/en/zend.form.html
Crozin
Cytat
A walidator się nie posypie błędami ?
W zamyśle było, że najpierw jakiś parser to odczyta, na podstawie tego utworzy sobie w pamięci odpowiednie walidatory, a do przeglądarki trafi już kod bez tego.
Elbacer
Z tego co czytam to zrobienie tego w szablonie raczej odpada trzeba to zrobić właśnie w kotrolerze i wynik czyli cały kod HTML wypluć w szablon.
Bo mój plan było przerobić ten kod poniżej, by wszystkie elementy strony można zmienić z poziomu szablonu.

Plik z definicją formularza:

CODE
$Login = new Inputs();
$Login->name = "login";
$Login->text_right = "Użytkownik";
$Login->text_top = "jakis napis top";
$Login->require = true;
Veryfication::SetIsError($Login->CheckLenght( 3, 10, "Login musi się zawierać w przedziale od 3 do 10 znaków exclamation.gif" ));
Veryfication::SetIsError($Login->CheckExistInBase( "login", "Podany login już istnieje w bazie exclamation.gif" ));


Wyświetlenie formularza:

CODE
echo $Login->AddInput();
bim2
~Crozin ja i tak najczęściej musze przystosowywać szablon dla siebie. Zawsze można dopisać kontrolki w xml do tego, a w templatkach dać jako taki dodatek. Mi w templatkach jest wygodniej, bo wiem do którego forma dodaje jakie błędy smile.gif Można dać przecież
<form errorId="1"> powiedzieć koderowi że to ma zostać i w xml dopisać resztę obsługi. smile.gif

PS. A co jak koder pomyli name="" ? :] Ten sam przykład.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.