Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OO] Formularze a obiekty
scanner
post
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]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hawk
post
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)
Go to the top of the page
+Quote Post

Posty w temacie
- scanner   [OO] Formularze a obiekty   5.04.2004, 22:28:19
- - halfik   hmmm... interesujące, sam nigdy się nie zastanawia...   5.04.2004, 23:10:50
- - scanner   W wolnych chwilach sponbuję rozbudowac to w coś wi...   5.04.2004, 23:17:19
- - PMadej   CytatW wolnych chwilach sponbuję rozbudowac to w c...   6.04.2004, 00:30:57
- - DeyV   Sądzę, że to bardzo dobry pomysł. Już jakiś czas ...   6.04.2004, 00:41:15
- - hawk   Hmm, ogólnie to co pokazuje Scanner i to co jest p...   6.04.2004, 08:37:49
- - hawk   Jeszcze dodam że walidacja powinna być zrobiona zg...   6.04.2004, 08:41:21
- - scanner   To co ja proponuję to tylko szkic, który powstał w...   6.04.2004, 09:18:59
- - halfik   Cytat2. Tworzymy tablicę z nazw pół i ich wartości...   6.04.2004, 10:36:31
- - DeyV   przeszukiwanie szablony byłoby, IMHO, bardzo złym ...   6.04.2004, 11:58:57
- - Ace   a nie latwiej jest... klasa generujaca formularz z...   6.04.2004, 13:23:21
- - halfik   heh, wygląda na to, ze należałoby jednak wszsytko ...   6.04.2004, 17:35:23
- - scanner   Musże przemyśleć kwestie czy stawiac na uniwersaln...   6.04.2004, 18:16:42
- - DeyV   Tu pojawi się problem potrzeb. Bo o ile np. takie...   6.04.2004, 18:41:26
- - halfik   hmm... chyba nie ma wyjścia i trzeba dobrać się np...   7.04.2004, 06:16:29
- - PMadej   no i przyszla kolej na moje swiateczne wypociny i ...   13.04.2004, 17:38:10
- - PMadej   problemy o ktorych wspomnialem na koncu poprzednie...   14.04.2004, 15:12:05
- - hawk   Mi się generalnie nie podoba opcja z generowaniem ...   14.04.2004, 16:51:31
- - Seth   Tez nie jestem zachwycony tego typu klasami gdyz j...   14.04.2004, 17:01:20
- - hawk   No czyli wypisz wymaluj WACT. Wada jest taka, że c...   14.04.2004, 18:52:51
- - marcin96   Czyli - jeśli dobrze rozumuję - chodzi o coś takie...   14.04.2004, 19:06:38
- - halfik   heh... faktycznie, to trzeba by wkręcić w jakiś sy...   14.04.2004, 19:07:38
- - marcin96   Cytatheh... faktycznie, to trzeba by wkręcić w jak...   14.04.2004, 19:18:12
- - hawk   Cytat2. Parsowanie pliku ustawień wizualnych ...   14.04.2004, 21:43:20
- - PMadej   ja tylko wyszczegolnie watek ktory zaniknal w toku...   14.04.2004, 22:06:22
- - hawk   Ten wątek wcale nie zaniknął. Byłoby to coś w styl...   15.04.2004, 08:52:16
- - PMadej   CytatDla przykładu: 1) jest formularz, pytanie o l...   15.04.2004, 20:06:41
- - hawk   Hmm, z drugiej strony ja zawsze myślałem że takie ...   15.04.2004, 22:15:14


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 20:35