Wersja beta dokumentacji do mechanizmu walidacji formularza w vframe

Podobne dokumenty
Modele danych walidacja widoki zorientowane na model

Zajęcia 4 - Wprowadzenie do Javascript

Laboratorium 7 Blog: dodawanie i edycja wpisów

Aplikacje WWW - laboratorium

SMS Kod Automatyczny

Baza danych do przechowywania użytkowników

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Aplikacje WWW - laboratorium

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

SMS Kod Automatyczny

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Bazy danych w PHP dla początkujących

Smarty PHP. Leksykon kieszonkowy

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

Języki i techniki programowania Ćwiczenia 2

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Aplikacje WWW - laboratorium

Dokumentacja Skryptu Mapy ver.1.1

Aplikacje internetowe

Dokumentacja smsapi wersja 1.4

MVC w praktyce tworzymy system artykułów. cz. 2

Przykładowa integracja systemu Transferuj.pl

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Internetowe bazy danych

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

Rozdział 4 KLASY, OBIEKTY, METODY

PHP 5 język obiektowy

Przykładowa integracja systemu tpay.com KIP S.A. ul. Św. Marcin 73/ Poznań.

Aplikacje internetowe - laboratorium

4. Projekt Bazy Danych

PHP: bloki kodu, tablice, obiekty i formularze

Wprowadzenie do Doctrine ORM

Backend Administratora

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Projekt strony internetowej firmy organizującej przyjęcia

Wprowadzenie do Internetu Zajęcia 5

Walidacja danych w ASP.NET MVC

Integracja frameworku Wicket z serwisem Platnosci.pl.

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Wprowadzenie do projektu QualitySpy

Wykład 03 JavaScript. Michał Drabik

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Oracle Application Express

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Dokument hipertekstowy

1. Rejestracja 2. Logowanie 3. Zgłaszanie nowego wniosku projektowego

Specyfikacja instalacji systemu Przelewy24.pl

Zajęcia 11 wykorzystanie MySQL w PHP

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

FORMULARZE. G. Przęczek

Formularze HTML. dr Radosław Matusik. radmat

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Aplikacje www laboratorium

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Umieszczanie kodu. kod skryptu

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Szablon główny (plik guestbook.php) będzie miał postać:

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Użycie filtrów w widoku

Spring Web MVC, Spring DI

SSK - Techniki Internetowe

Aplikacje WWW - laboratorium

Formularze w PHP dla początkujących

1. Logowanie się do panelu Adminitracyjnego

Informatyzacja Przedsiębiorstw

JPK w programie Ewa - fakturowanie i magazyn

Laboratorium 1 Wprowadzenie do PHP

JAVAScript w dokumentach HTML (2)

Dokumentacja techniczna - PBL

Dokumentacja serwera REST do obsługi rezerwacji w systemie SaNAtoRIUm.pro

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

START. .NET Framework Windows Installer. Odpalamy MoorHunt'a, gdy otworzy sie nam programik zobaczymy oto takie okienko:

media Blitz wydajne sytemy szablonów

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

Sms. v Strona 1 z 17. FUTURE-SOFT SP. Z O.O. ul. Gosławicka2/ , Opole tel sales@future-soft.pl NIP:

Baza danych sql. 1. Wprowadzenie

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Podstawy technologii WWW

Aplikacje WWW - lab 5

KatMPBSoft - 1 -

programowanie w oparciu o platformę netbeans w praktyce

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wykład 5: PHP: praca z bazą danych MySQL

Aplikacje WWW - laboratorium

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Wykład 5: Klasy cz. 3

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Zdarzenia Zdarzenia onload i onunload

Ćwiczenie 8. Kontrolki serwerowe

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Transkrypt:

Michal Buczek Wersja beta dokumentacji do mechanizmu walidacji formularza w vframe Od czego zacząć... najlepiej na początek zastanowić sie jaki filtr i/lub walidator chcemy nałożyć na nasze pole. Aby to zrobić musimy znać jakiś jego identyfikator. Obecnie mozemy walidować pola typu: $validators = array ( 'Digits' => 'digits', 'Int' => 'number', 'DateTime' => 'datetime',//tego jeszcze nie ma ale nidlugo bedzie 'Date' => 'date', 'EmailAddress' => 'email', 'NotEmpty' => 'required', 'AlfaNumSpace' => 'alfanumspace' Są to tylko walidatory, które oprócz wartości pola nie potrzebują żadnych dodatkowych parametrów do ich wywołania. Może ono nastąpić poprzez użycie ich nazwy. Pełną listę dostępnych filtrów i walidatorów można znaleźć w bibliotece Zend w katalogach Validate i Filter oraz bibliotece Veneo w analogicznych katalogach. Ale o tym pozniej. Talica pokazana powyżej obrazuje mapowanie nazw walidatorów od strony php na te używane w jquery.validator. Mechanizm mapowania znajduje sie w funckji smarty fieldvalidator, która ustawia odpowiednią klasę na podstawie konfiguracji zapisanej w modelu. Wygląda to następująco: <form class="form" id="formbasic" action="{zfurl id=$item->id" method="post"> <fieldset> <dl> <dt>id</dt> <dd>6<input type="hidden" id="wpr_id" name="wpr_id" value="{$item->id" />

<dt><label for="cnt_title">tytuł</label></dt> <dd><input class="field {fieldvalidator fields=$validators.wpr_title" type="text" id="wpr_title" name="wpr_title" value="{$item->title" /> <dt> </dt> <dd class="submit"> <input class="logout" id="formbasicsubmit" type="submit" value="zapisz" /> </dl> </fieldset> </form> {validateform id="formbasic" Funkcja validateform uruchamia jquery.validator, która na podstawie dołączonych klas waliduje pola w formularzu. id = id formularza. Użycie funkcji fieldvalidator: {fieldvalidator fields=$validators.wpr_title Parametrem jest tutaj tablica zdefiniowanych w modelu walidatorów dla danego pola (w tym przypadku wpr_title. Aby ją przekazać do tpl, w odpowiednim kontrolerze wywołujemy abstrakcyjna metode preparevalidation zdefiniowaną w każdym modelu: $this->view->validators = $modelvm->preparevalidation( w której znajduje sie konfiguracja naszych validatorów. Przykladowa metoda preparevalidation: public function preparevalidation(&$data = array( $vobject = null { $validators = array ( 'AlfaNumSpace', new Veneo_Validate_Unique( $this, 'nick', 'usr_email' => array (

'EmailAddress', new Veneo_Validate_Unique( $this, 'email', 'remember' => array ( 'allowempty' => true 'old_password' => array ( array( 'identical', (isset($vobject->password? $vobject->password : null 'usr_birthdate' => array ( 'allowempty' => true, 'Birthdate' return $validators; W taki oto sposób uzyskujemy dołączenie zdefiniowanych przez nas walidatorów do jquery.validator dla pól formularza... ale tylko tych przekazanych przez nazwe (wyjątkiem jest tutaj 'allowempty' => true jesli pole nie jest wymagane przypisujemy mu ten walidator aby podczas walidacji zostalo ono dołączone do pól, które poprawnie ją przeszly - getescaped( o tym pozniej Inne niestety są bardziej problematyczne i aby je poprawnie skonfigurować nie wystarczy tylko wpisać je do konfiguracji w modelu. I tak przykładowo dwa sposoby na zbadanie unikalności i identyczności pola po stronie jquery.validator: 1. Sprawdzenie unikalności danego pola: <dt><label for="cnt_date">email</label></dt> <dd> <input class="field {fieldvalidator fields=$validators.wpr_email" type="text" id="wpr_email" name="wpr_email" value="{$item->email" /> <a class="remote" name="wpr_email" rel="/whitepaper/index/checkemail/id/{$item->id" title="{#wpaper_uniq_email_alert#"></a>

Aby sprawdzać unikalność danego pola dopisujemy za tym polem link w którym ustawiamy class="remote" oznacza że tutaj będzie definicja skryptu który będzie sprawdzał unikalność danego pola w stylach ustawiamy tej klasie display: none name="wpr_email" oznacza nazwe pola które będziemy sprawdzać rel="/.." tutaj wpisujemy link do skryptu który będzie sprawdzał unikalność musi zwracać 1 lub 0 title="email jest już używany w systemie" tutaj wpisujemy komunikat błędu 2. Sprawdzenie identyczności pól: <dt><label for="cnt_date">email</label></dt> <dd> <input class="field {fieldvalidator fields=$validators.wpr_email" type="text" id="wpr_email" name="wpr_email" value="{$item->email" /> <dt><label for="cnt_date">reemail</label></dt> <dd> <input class="field required" type="text" id="re_email" name="re_email" value="" /> <a class="equalto" name="re_email" rel="wpr_email" title="{#wpaper_equalto_email_alert#"></a> Aby sprawdzić identyczność 2 pól dopisujemy za polem sprawdzającym link w którym ustawiamy: class="equalto" oznacza że tutaj będziemy porównywać pola name="re_email" oznacza nazwę pola sprawdzającego rel="wpr_email" oznacza nazwę pola sprawdzanego title="pola nie są identyczne " tutaj wpisujemy komunikat błędu Tutaj mała uwaga ponieważ zakładamy że walidujemy w JS w php nie trzeba sprawdzać czy te pola są identyczne po prostu bierzemy jako wartość do zapisu pierwszą z nich.

Dla przypomnienia: formularze w vframe w większości przypadków walidujemy i w JS i w PHP nie mniej jednak komunikaty o poprawności Pol wyświetlamy tylko za pomocą JQuery.validator natomiast w razie błędu walidacji w PHP wyświetlamy komunikat o błędnych danych. Zakładamy że jeżeli do PHP przychodzą błędne dane to po prostu ktoś coś kombinuje więc takiemu komuś nie należy się ładny komuniat co źle wrowadził; Do tej pory walidowalismy po stronie jquery... teraz php: Tak jak pisałem wczesniej - mamy sobie abstrakcyjna metode preparevalidation zdefiowaną w modelu z konfiguracją validatorów np: public function preparevalidation(&$data = array( $vobject = null { $validators = array ( 'AlfaNumSpace', new Veneo_Validate_Unique( $this, 'nick', 'usr_email' => array ( 'EmailAddress', new Veneo_Validate_Unique( $this, 'email', 'remember' => array ( 'allowempty' => true 'old_password' => array ( array( 'identical', (isset($vobject->password? $vobject->password : null 'usr_birthdate' => array ( 'allowempty' => true, 'Birthdate' return $validators; W niektórych przypadkach nie możemy ustawić walidatora tylko poprzez jego nazwę, musi on czasami dostac jakieś dodatkowe parametry (np. Sprawdzenie unikalnosci nicka czy maila wtedy inicjumeny bezposrednio dany walidator i dołączamy niezbedne parametry

Przyklad: new Veneo_Validate_Unique( $this, 'nick', $this wiadomo nick nazwa pola tożsama z nazwa metody w modelu ktora bedzie walidowac $vobject->id patrz nizej objasnienie $vobject Istnieje takze analogiczna metoda do definicji filtrów: public function getfilters( { $filters = array ( 'ReplaceMultipleWhitespaces' return $filters; z tym ze w jej przypadku zdefiniowane przez nas filtry sa mergowane z tymi, ktore zostały okreslone dla wszystkich defaultowo w Veneo_Model w metodzie validatedata(. W niektorych przypadkach moze istniec potrzeba wyłączenia tych ogólnych - w takim wypadku oprócz zdefiniowanych naszych wlasnych dopisujemy: '*' => array ( Pryklad zdefiniowania wlasnego filtra dla pola usr_nick i usunięcia dafaultowych: public function getfilters( { $filters = array ( '*' => array ( 'ReplaceMultipleWhitespaces' return $filters; Po wysłaniu formularza w odpowiednim kontrolerze dokonujemy walidacji np: $uservm = UserVM::get(

if($this->getrequest(->ispost( { $input = $uservm->validatedata( $this->getrequest(->getpost( if(!$input->isvalid( { $this->view->invalidfields = $input->getinvalid( else { $status = $uservm->save($input->getescaped( $this->_redirect(_domain.'/profile/auth/confirmregister/status/'. ((($status? self::action_added : self::action_negation.'_'.self::action_added Objasnienie mozliwie niejasnych pkt: Metoda validatedata( ustawia wszystkie zdefiniowane filtry i walidatory oraz inicjuje obiekt do walidacji. Parametry: validatedata($data, $vobject = null, $modified_validators = array( $data post lub get $vobject czasami zachodzi potrzeba przekazania dodatkowo obiektu, wzgledem ktorego ma nastapic dana walidacja np. aktualne haslo usera przy sprawdzeniu identycznosci teraz wpisanego lub gdy walidujemy unikalnosc maila przy jego edycji, a chcemy pominąc sprawdzanie naszego aktualnego itp $modified_validators czasami chcemy zmodyfikowac w konkretnym kontrolerze zdefiniowane przez nas walidatory w modelu i po to jest wlasnie ten parametr ; $input->isvalid( walidacja metoda zwraca true/false $input->getinvalid( zwraca pola ktore nie przeszly walidacji (ich walidatory zostaly zdefiniowane $input->getescaped( - zwraca pola ktore przeszly poprawnie walidacje Hmm, chyba wszystko ; Mam nadzieje ze w miare po polsku to napisalem W razie jakichkolwiek niejasnosci mozna spokojnie podejsc i sie zapytac... przyjmuje takze czeki ; pozdrawiam Michal Buczek