FormEngine
Transkrypt
FormEngine
Gekosale's FormEngine DOKUMENTACJA TECHNICZNA 1. Czym jest FormEngine? Gekosale, jako rozbudowany system mający charakter aplikacji internetowej, do wprowadzania i zarządzania zawartością wykorzystuje przystępne dla użytkownika formularze. Mając świadomość tego, że dla użytkownika systemu te liczne formularze będą narzędziem codziennej pracy, nasz Zespół postawił sobie za główny cel wygodę ich obsługi. Wykorzystując nowoczesne techniki działające po stronie przeglądarki internetowej, stworzyliśmy unikalny charakter pracy z systemem Gekosale. Klasyczne elementy interfejsu użytkownika nigdy nie były tak wygodne w obsłudze i nie dawały takich możliwości użytkownikowi. Przemyślany i zaawansowany sposób działania komunikacji użytkownika z systemem stał się jednym z kluczowych elementów, dzięki którym Gekon zyskał dzisiejszą popularność. Jednak działające po stronie klienta elementy wymagają odpowiedniego wsparcia ze strony serwera. Z myślą o osobach piszących rozszerzenia do Systemu, o osobach wdrażających specjalistyczne rozwiązania oparte o Gekosale, oraz o nas samych, byliśmy zmuszeni opracować wygodny i elastyczny sposób generowania formularzy. Po próbach i przejściach z QuickFormem z biblioteki Pear, zdecydowaliśmy się postawić na własne, przystosowane do potrzeb Gekona rozwiązanie. Tak właśnie powstał FormEngine – do bólu obiektowy, do szaleństwa prosty i do obłędu rozszerzalny silnik generowania i obsługi formularzy. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 2. Korzystanie z FormEngine Struktura formularzy tworzonych w oparciu o FormEngine ma charakter hierarchii. Formularz, będący elementem nadrzędnym, korzeniem całego drzewa, posiada swoich potomków. Są to elementy-kontenery, elementy-pola oraz jeden element specjalny – statyczny. Elementy struktury formularzy Kontenery są pojemnikami, które tworzą głębszy poziom w strukturze formularza. Mogą one zawierać kolejnych potomków, które również mogą być kontenerami. Zresztą sam korzeń również jest swojego rodzaju kontenerem. Kontener, choć to oczywiście zależy od intencji twórcy szablonu, może być tłumaczony najczęściej jako element typu <fieldset/>. Często, na pierwszym poziomie hierarchii, można to utożsamiać z podziałem formularza na zakładki. Tak właśnie jest to rozwiązane w standardowym Panelu Administracyjnym. Pola są natomiast elementami, które przyjmują wartości. Są to namacalne elementy interfejsu użytkownika. Od najprostszych pól tekstowych, przez listy wyboru, edytory Rich Text, po skomplikowane aplikacje DataGrida i jemu podobnych, charakterystycznych dla Gekosale cząstek. Element służy zaś prezentacji krótkiej treści, przerywnika, informacji. Jest niezmienny, choć może być zależny od wartości pozostałych pól. Prawdziwą moc kontenerów i hierarchicznego sposobu budowania formularzy można sobie uświadomić, gdy odkryje się możliwość powtarzalności. Korzystając ze specjalnego rodzaju powtarzalnych kontenerów można uzyskać fragment formularza, który pozwolimy użytkownikowi powielać dowolną (lub ograniczoną przez nas) liczbę razy. Jeśli dołączyć do tego możliwość zwielokrotniania wartości wpisywanych w pojedyncze pola, uzyskujemy nieopisaną elastyczność. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Inicjalizacja formularza Miejscem, w którym FormEngine rozwija skrzydła, jest kontroler. Tam inicjujemy formularz, dodajemy do niego odpowiednie kontenery i pola, ustalamy reguły walidacji, zależności między polami, filtrację wartości, czy wreszcie dokonujemy walidacji przesłanych danych i wykorzystujemy je po wstępnej obróbce. Pierwszym krokiem jest inicjalizacja formularza. Jest to utworzenie obiektu klasy FE_Form, której konstruktor przyjmuje jeden parametr – tak, jak każdy element formularza – który jest tablicą asocjacyjną składającą się z danych konfiguracyjnych. $form = new FE_Form(Array( 'name' => 'add_user', 'action' => '/users/add', 'method' => 'post' )); Każda z klas, a więc każdy z elementów formularza, posiada zasób rozumianych przez nią danych konfiguracyjnych. Ich listy można znaleźć w dalszej części dokumentacji. W tym momencie należy zwrócić uwagę, że nazwa (name) formularza musi być unikatowa. Jest to wykorzystywane w mechanizmie przetwarzania danych. Budowa formularza Kiedy formularz został już zainicjalizowany, możemy przystąpić do ustalania jego zawartości. Do tego celu posłużymy się metodą AddChild() będącą częścią każdego rodzaju kontenera, a więc i samego formularza będącego kontenerem-korzeniem. $personalData = $form->AddChild(new FE_Fieldset(Array( 'name' => 'personal_data', 'label' => $this->registry->core->getMessage('TXT_PERSONAL_DATA') ))); Dzięki powyższemu fragmentowi kodu dodajemy do formularza nowy kontener. Posłuży on nam do zgrupowania pól dotyczących danych osobowych użytkownika. Wartość zwrócona z metody AddChild(), czyli de facto nowoutworzony element formularza, jest użyteczna w wielu późniejszych działaniach – jak choćby podczas dodawania reguł walidacji, czy zależności między polami. W przypadku kontenera jest ona używana w celu Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 dodawania doń nowych pól, mających się stać jego potomkami. Pora dodać pole tekstowe, w którym użytkownik wpisze swoje imię. $personalData->AddChild(new FE_TextField(Array( 'name' => 'firstname', 'label' => $this->registry->core->getMessage('TXT_FIRSTNAME'), 'help' => $this->registry->core->getMessage('TXT_FIRSTNAME_HELP'), 'rules' => Array( new FE_RuleRequired($this->registry->core ->getMessage('ERR_EMPTY_FIRSTNAME')) ) ))); Jak widać w powyższym fragmencie kodu, tym razem wywołujemy metodę AddChild() nie dla formularza, lecz dla naszego utworzonego chwilę wcześniej kontenera. Dzięki temu pole stanie się jego potomkiem. Widzimy też ciekawą opcję konfiguracyjną – rules – która jest tablicą reguł walidacji. W naszym przykładzie pole to jest wymagane, więc walidacja nie powiedzie się, gdy użytkownik pozostawi je puste. Parametrem konstruktora reguły jest komunikat mówiący o niepowodzeniu. Reguły można też alternatywnie dodawać do pola w inny sposób. Jeśli nowoutworzone pole przypiszemy do zmiennej $firstname, wówczas możemy regułę dodać później w poniższy sposób: $firstname->AddRule( new FE_RuleFormat('Imię jest błędne', '/[a-zA-Z ]{3,}/') ); Przy okazji dowiedzieliśmy się, że łatwo można dodawać reguły oparte o wyrażenia regularne. Warto wspomnieć, że reguły (a także filtry i zależności – choć te ostatnie nie są zalecane w takim użyciu) można dodawać do kontenerów. Wówczas zostaną one automatycznie dodane do wszystkich ich potomków. Musimy jedynie pamiętać, że w przypadku kontenerów reguły można dodawać jedynie sposobem AddRule(), a nie w tablicy konstruktora. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Wypełnianie formularza danymi i ich pobieranie z formularza Użytkownikowi często trzeba pomóc w wyborze. Dlatego dostarczenie wartości domyślnych jest w wielu przypadkach niezbędne. W tym celu należy użyć metody Populate(), którą można wywołać zarówno dla całego formularza, jak i dla pojedynczego pola. $form->Populate($userData); Należy pamiętać, by nie dokonywać tego przed ukończeniem określania struktury formularza! Format danych Bardzo ważną kwestią wymagającą omówienia jest format danych, jaki jest przyjazny dla FormEngine, oraz jaki zarazem jest (wbrew pierwszej reakcji!) przyjazny dla programisty. Z racji trzymania się drzewiastej hierarchii budowanej tak, jak w przykładach załączonych powyżej, pola formularza posiadają nazwy ją uwzględniające. Dlatego też po przesłaniu wypełnionego formularza do serwera, wartości pola firstname znajdującego się w kontenerze personal_data, należy się doszukiwać w miejscu: $_POST['personal_data']['firstname'] Jeśli zaś kontener personal_data byłby powtarzalny i użytkownik wprowadziłby dwa zestawy danych osobowych, wówczas imiona kryłyby się pod takimi zmiennymi: $_POST['personal_data'][0]['firstname'] $_POST['personal_data'][1]['firstname'] Gdyby to pole firstname okazało się polem powtarzalnym lub wielowartościowym, mielibyśmy z kolei: $_POST['personal_data']['firstname'][0] $_POST['personal_data']['firstname'][1] Dzięki temu uzyskujemy rozróżnienie dwóch powyższych sytuacji – wiemy, który element jest iterowany. Jest to szczególnie ważne w sytuacji takiej, jak poniżej: Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 $_POST['personal_data'][0]['firstname'][0] $_POST['personal_data'][0]['firstname'][1] $_POST['personal_data'][1]['firstname'][0] Tak, drogi Czytelniku, zgadłeś – chodzi o powtarzalne pole w powtarzalnym kontenerze. Podczas „wyciągania” danych z formularza można posłużyć się metodą GetValues(), lub jej aliasem znanym z QuickForm, a więc getSubmitValues() jeśli wcześniej dokonaliśmy walidacji lub ręcznie załadowaliśmy (Populate()) dane z tablicy $_POST do obiektu formularza. Dane te są przefiltrowane i mają postać taką, jak opisana powyżej – a więc hierarchiczną. Udogodnieniem, choć niezalecanym, jest możliwość przekazania jako parametru metody GetValues() (lub jej aliasu) w postaci FE_Form::FORMAT_FLAT, co pozwoli nam na uzyskanie struktury „płaskiej” zwróconych danych, a więc z pominięciem członów dotyczących kontenerów. Jeśli dane są zwielokrotnione, wówczas przyjmą postać tablicy o indeksach numerycznych. Walidacja danych Aby ewaluować reguły sprawdzania poprawności zdefiniowane podczas tworzenia formularza, należy wywołać metodę Validate(), której argumentem może być tablica z danymi – choćby surowa tablica $_POST. if ($form->Validate($_POST)) { // Poprawne dane nadeszły od użytkownika... } Metoda ta nie zwróci prawdy, jeśli dane rzeczywiście nie pochodzą z przesłanego formularza (podczas submitowania jest automatycznie dodawane ukryte pole o tym świadczące). Przesłanie formularza do przeglądarki Ostatnim etapem tworzenia formularza jest jego przesłanie do szablonu. Dokonujemy tego po prostu tworząc nową zmienną w szablonie, której przypiszemy jako wartość nasz obiekt-korzeń. $this->registry->template->assign('form', $form); Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Teraz wystarczy tylko skorzystać z funkcji Smarty, dostarczonej z FormEngine, by nasz nowoutworzony formularz wypisać. Przy wywołaniu tej funkcji musimy podać tryb renderowania – albo „JS”, gdy w efekcie chcemy uzyskać surowy kod JavaScript, gotowy do współpracy z biblioteką JS Gekosale (domyślne dla Panelu Administracyjnego), lub tryb „Static” (JESZCZE BRAK!) dla renderowania w postaci znaczników XHTML. {fe_form form=$form render_mode="JS"} Należy pamiętać, że nie musimy (nie powinniśmy!) powyższej linijki zawierać wewnątrz ręcznie utworzonego formularza. Wszelkie niezbędne znaczniki zostaną utworzone automatycznie. Alternatywą jest wypisanie wartości zwróconej z metody Render() formularza. echo $form->Render('JS'); 3. Sposób użycia elementów składowych Rodzaje pól Poniżej znajduje się lista pól, które można dodawać do formularza. Są one pogrupowane zależnie od ich charakteru. Kontenery FE_Fieldset Standardowy rodzaj kontenera służący do grupowania pól. Parametry: • name – nazwa kontenera. Używana podczas tworzenia nazw pól potomnych. Powinna być unikalna dla formularza. • label – tytuł kontenera wyświetlany w przeglądarce. • dependencies – tablica predefiniowanych zależności. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 FE_FieldsetRepeatable Kontener, który zależnie od potrzeb użytkownika może być powtarzany. Parametry: • name – nazwa kontenera. Używana podczas tworzenia nazw pól potomnych. Powinna być unikalna dla formularza. • label – tytuł kontenera wyświetlany w przeglądarce. • dependencies – tablica predefiniowanych zależności. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). Pola FE_Hidden Pole ukryte, a więc zwyczajny <input type=”hidden”/>. Służy przekazaniu informacji pomocniczych. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • dependencies – tablica predefiniowanych zależności. FE_TextField Pole tekstowe. Może być powtarzalne. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 • filters – tablica predefiniowanych filtrów. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). FE_Password Pole hasła. Zachowuje się tak samo, jak zwykłe pole tekstowe z tą różnicą, że zawartość nie jest wyświetlana na ekranie. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • filters – tablica predefiniowanych filtrów. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). FE_Textarea Pole typu textarea. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 • cols – liczba kolumn. • rows – liczba wierszy. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • filters – tablica predefiniowanych filtrów. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). FE_RichTextEditor Pole wprowadzania tekstu formatowanego, wyposażone w edytor WYSIWYG. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • cols – liczba kolumn. • rows – liczba wierszy. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • filters – tablica predefiniowanych filtrów. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 FE_File Pole służące do wysyłania pliku przez użytkownika. Może być powtarzalne. Oparte jest o element flashowy SWFUpload, pozwalający na asynchroniczne wysyłanie plików. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • upload_url – URL dokumentu, który zostanie wywołany w celu inicjalizacji transferu plików. • file_types – tablica sugerowanych nazw plików (np. Array('*.png', '*.jpg')). • file_types_description – słowne określenie powyższych rodzajów plików. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 FE_Image Pole służące do wysyłania orbazu przez użytkownika. Może być powtarzalne. Bazuje na polu typu FE_File, z tym, że wyświetla miniatury przesłanych plików. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • upload_url – URL dokumentu, który zostanie wywołany w celu inicjalizacji transferu plików. • file_types – tablica sugerowanych nazw plików (np. Array('*.png', '*.jpg')). • file_types_description – słowne określenie powyższych rodzajów plików. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). FE_Select Rozwijana lista wyboru. Może być powtarzalna. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • options – tablica opcji, a więc tablica obiektów typu FE_Option. Np.: Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 // ... 'options' => Array( new FE_Option('pl', 'Polska'), new FE_Option('uk', 'Wielka Brytania') ) // ... Istnieje możliwość stworzenia takiej tablicy na podstawie zwyczajnej tablicy asocjacyjnej. // ... 'options' => FE_Option::Make( Array('pl' => 'Polska', 'uk' => 'Wielka Brytania') ) // ... • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. • repeat_min – minimalna liczba powtórzeń (domyślnie 1). • repeat_max – maksymalna liczba powtórzeń (domyślnie 1). FE_MultiSelect Lista wyboru umożliwiająca wybranie wielu opcji. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • options – tablica opcji, a więc tablica obiektów typu FE_Option. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 FE_RadioGroup Grupa pól typu radio, posiadających tę samą nazwę i umożliwiająca wybór tylko jednego z nich. Parametry: • name – nazwa pola. Używana podczas tworzenia nazwy pola przy przesyłaniu danych. • label – tytuł kontenera wyświetlany w przeglądarce. • help – Treść pomocy dla pola. • comment – tekst pomocniczy pojawiający się obok pola (np. „tylko wielkie litery”). • options – tablica opcji, a więc tablica obiektów typu FE_Option. • dependencies – tablica predefiniowanych zależności. • rules – tablica predefiniowanych reguł walidacji. Elementy specjalne FE_StaticText Statyczny, niezmienny blok tekstu, informacji. Jego wyświetlenie może być uzależnione od warunku. Parametry: • text – treść bloku. Dopuszczalny jest kod XHTML. • dependencies – tablica predefiniowanych zależności. Reguły Reguły są warunkami, pod których kątem jest przeprowadzana walidacja. Mogą być nadawane konkretnemu polu (jako element tablicy rules podczas inicjalizacji lub bezpośrednio wywołując metodę AddRule()), lub grupie pól. Przykład: $email->AddRule(new FE_RuleRequired('Adres e-mail jest wymagany!')); $email->AddRule(new FE_RuleEmail('Podano błędny adres e-mail!')); Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Dostępne reguły Poniżej znajduje się lista dostępnych klas, z użyciem których można definiować reguły walidacji: • FE_RuleRequired – pole jest obowiązkowe. Brak określonej wartości skutkuje komunikatem błędu. Parametry: ◦ komunikat o błędzie • FE_RuleFormat – jeśli wartość pola nie odpowiada podanemu jako drugi argument wyrażeniu regularnemu, następuje błąd walidacji. Parametry: ◦ komunikat o błędzie ◦ wyrażenie regularne • FE_RuleEmail – wartość pola musi być poprawnym adresem e-mail. Tak naprawdę jest to reguła typu FE_RuleFormat z predefiniowanym wyrażeniem regularnym. Parametry: ◦ komunikat o błędzie • FE_RuleUnique – wartość pola musi być unikalna w zadanej kolumnie zadanej tabeli bazy danych. Parametry: ◦ komunikat o błędzie ◦ nazwa tabeli ◦ nazwa kolumny ◦ [funkcja-lambda przetwarzająca wartość przed porównaniem] • FE_RuleCompare – wartość pola musi być identyczna, jak wartość w innym, zadanym polu. Parametry: ◦ komunikat o błędzie ◦ pole, z wartością którego wartość ma zostać porównana (nie nazwa pola, tylko obiekt!) Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Zależności Zależności pozwalają na modyfikację zachowania pól w uzależnieniu od wartości innego pola. Pozwalają np. na ukrycie pola w przypadku wybrania przez użytkownika nieodpowiedniej wartości w innym polu, pokazanie pola, ignorowanie reguł walidacji w określonym przypadku, lub automatyczne wypełnienie pola wartością zależną od wartości innego pola. Składnia zależności: new FE_Dependency($rodzaj, $pole_zdalne, $warunek); W powyższym zapisie $rodzaj przyjmuje wartość jednej ze stałych opisanych poniżej, $pole_zdalne jest polem formularza którego wartość jest badana, a $warunek jest warunkiem zbudowanym zgodnie z zasadami opisanymi powyżej. W przypadku zależnościsugestii, warunek jest zastępowany callbackiem do funkcji zwracającej sugestię. Zależność do pola można dodać metodą AddDependency() lub w konstruktorze pola, jako jeden z elementów tablicy dependencies. Rodzaje zależności • FE_Dependency::HIDE – jeśli warunek jest spełniony, wówczas pole zostaje ukryte, a reguły walidacji są ignorowane. • FE_Dependency::SHOW – pole jest pokazywane tylko gdy warunek jest spełniony i tylko wtedy obowiązują reguły walidacji. • FE_Dependency::IGNORE – pole jest cały czas widoczne, ale w przypadku spełnienia warunku reguły walidacji są ignorowane. • FE_Dependency::SUGGEST – zamiast warunku podaje się callback do funkcji/metody (nazwa funkcji lub tablica Array($obiekt, $nazwa_metody)), która ma zostać użyta do zmiany wartości bieżącego pola (tego, dla którego dodaje się zależność) w uzależnieniu od wartości pola zdalnego. Funkcja ma przyjmować parametr będący wartością pola zdalnego, a zwracać ma wartość pola bieżącego. Działa tylko po stronie przeglądarki, nie jest istotna po przesłaniu formularza do serwera. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 Warunki Warunek jest kombinacją obiektów poniższych klas. Służy do reprezentacji zdania logicznego, którego spełnienie powoduje wykonanie się zależności, do której warunek jest dopisany. FE_ConditionEquals – parametrem jest wartość lub tablica wartości. Zwraca • prawdę, jeśli zdalne pole ma wartość równą tej przekazanej w parametrze, lub dowolnej z wartości w przekazanej tablicy. FE_ConditionGE – zwraca prawdę, jeśli wartość pola zdalnego jest większa lub • równa wartości podanej w parametrze. FE_ConditionLE – zwraca prawdę, jeśli wartość pola zdalnego jest mniejsza lub • równa wartości podanej w parametrze. • FE_ConditionNot – zaprzeczenie warunku podanego w parametrze. • FE_ConditionAnd – konkatenacja dwóch lub więcej warunków, przekazanych w parametrze jako tablica. FE_ConditionOr – alternatywa dwóch lub więcej warunków, przekazanych w • parametrze jako tablica. Przykłady zależności i warunków $post_code->AddDependency( new FE_Dependency( FE_Dependency::IGNORE, $country, new FE_ConditionNot(new FE_ConditionEquals('pl')) ) ) Pole z kodem pocztowym nie będzie walidowane, jeśli użytkownik wybrał inny kraj, niż Polska. Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009 $pack_as_a_gift->AddDependency( new FE_Dependency( FE_Dependency::SHOW, $weight, new FE_ConditionAnd(Array( new FE_ConditionGE(100), new FE_ConditionLE(2000) )) ) ) Pole „Zapakuj jako prezent” pojawi się tylko wtedy, gdy wybrana waga produktu znajdzie się w przedziale 100-2000 gramów. Filtracja Filtry służą temu, by wstępnie przetworzyć dane, jeszcze przed poddaniem ich walidacji. Ważną zaletą filtrów jest to, że można je dodawać z użyciem jednej linijki do całego formularza. Obecnie dostępne są następujące, standardowe filtry: • FE_FilterTrim – z początku i końca wartości usuwane są białe znaki. • FE_FilterNoCode – wartości usuwane są fragmenty kodu (strip_tags()). Przykładowe użycie: $form->AddFilter(new FE_FilterTrim()); Filtry można również dodawać jako elementy tablicy filters podczas inicjalizacji pola. 4. Kontakt W razie pytań i wątpliwości, proszę o kontakt. Postaram się pomóc w każdym przypadku. Bartek Bazyluk – Frontend Developer [email protected] Gekosale's FormEngine – Dokumentacja Techniczna – wersja z 15.09.2009