![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Dziaiaj podczas dyskusji z PMadejem wynikł temat obiektowej obsługi formularzy. Zaświtał mi w głowie taki schemacik, jaki podaję niżej. Oczywiscie nie gwarantuję, ze zadziała - ale myślę, że wystarczająco obrazuje mój tok myśłenia. Co sądzicie do tagiego podejścia do tematu walidacji dancy hz formularzy?
BTW: w kodzie wielu rzeczy nie ma, ale nie w tym sęk... [php:1:5d9c559937]<?php class Form { var $arrFormElements = NULL; function Form() { $this->FormElements = array(); } function CreateField( $strName ) { $this->arrFormElements[$strFieldName] = new FormField(); } } class FormField { var $strName = ''; var $strType = ''; var $mixData = ''; var $blnRequired = false; var $blnValid = false; var $blnPattern = NULL; var $mixPatternName = ''; var $arrErrors = NULL; function FormField() { $this->arrErrors = array(); } function Create() { $smarty->display( 'form_elements/'.$this->strFieldType.'.tpl' ); /** * Zakładamy, ze mamy teplatesy typu: textarea, input, button itp. */ } function ValidatePattern( ) { if( $this->blnRequired ) { $this->blnValid = !is_empty( $this->mixData ); if( !$this->blnValid ) { $this->arrErrors[] = 'Must be filled'; } } if( !is_null( $this->$blnPattern ) ) { $this->blnValid = preg_match($this->$blnPattern, $this->$blnData); if( !$this->blnValid ) { $this->arrErrors[] = 'Must be corrected '.$this->strPatternName.' value!'; } } } } /** * Example of use */ $Form = new Form(); $Form->CreateField( 'pkwiu', true ); $Form->arrFormElements['pkwiu']->strType = 'input_text'; $Form->arrFormElements['pkwiu']->strData = $_POST['pkwiu']; $Form->arrFormElements['pkwiu']->strPattern = '([0-9]{2}.[0-9]{1,2}.[0-9]{1,2}-[0-9]{1,2}.[0-9]{1,2})'; $Form->arrFormElements['pkwiu']->strPatternName = 'PKWiU'; $Form->arrFormElements['pkwiu']->ValidatePattern(); if( !$Form->arrFormElements['pkwiu']->blnValid ) { $Form->arrFormElements['pkwiu']->Create(); foreach( $Form->arrFormElements['pkwiu']->arrErrors as $strError ) { echo '<br />'.$strError; } } ?> [/php:1:5d9c559937] |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Cytat 2. Parsowanie pliku ustawień wizualnych (tworzone przez designerów) formularza - style, klasy, czy może nawet typ używanych elementów - to w jakimś pliku konfiguracyjnym... czy to właśnie przyjmującym formę html, czy też jakiś inny xml...
Nie do końca. Ja chcę żeby nie było osobngo pliku z wyglądem formularza. Tylko żeby system formularzowy wyciągał wszystko co trzeba bezpośrednio z pliku, w którym jest cała reszta strony. Przezroczyste dla designera. A po stronie php prawdopodobnie dodatkowe ogniwo w procesie przetwarzania. Tylko pytanie, jak i gdzie je wstawić. Posługując się przykładem Smarty... przed Smarty? po Smarty (output buffering, fetch zamiast display, itd)? plugin do Smarty? Cytat Generalnie jakoś nigdy nie byłem przekonany do tworzenia klas generujących formularze
No ja też nie. Generalnie to tu ścierają się - w uproszczeniu - 2 koncepcje architektury tego wszystkiego: oryginalna (scannera?) i moja. Jak dla mnie: nie generacja formularza, tylko transformacja statycznego formularza do czegoś bardziej inteligentnego. Tak jak chce halfik: bez mieszania warstw. Heh, powinienem pisać manifesty filozoficzne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:35 |