Elbacer
5.04.2009, 16:16:42
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
5.04.2009, 16:22:21
Po stronie kontrolera a do widoku przesylasz wynik
Elbacer
5.04.2009, 16:26:55
Tylko w ten sposób szablon nie da możliwości zmiany układu pól formularza itp. jak bym chciał layout zmienić.
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
5.04.2009, 16:54:41
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
5.04.2009, 16:58:39
Wlasciwy kod programu jest w kontrolerze, przetwarzasz dane a wynik wysylasz do widoku. Tak widok to to samo co szablon
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.
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

Divki bezinwacyjne oczywiście
Crozin
5.04.2009, 19:12:03
@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ń?
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
5.04.2009, 19:29:30
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
5.04.2009, 19:35:25
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

" ));
Veryfication::SetIsError($Login->CheckExistInBase( "login", "Podany login już istnieje w bazie

" ));
Wyświetlenie formularza:
CODE
echo $Login->AddInput();
~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

Można dać przecież
<form errorId="1"> powiedzieć koderowi że to ma zostać i w xml dopisać resztę obsługi.

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.