On Wed, 23 Jan 2002 10:45:00 +0100, "Anders Johannsen"
<anders@johannsen.com> wrote:
>At opfatte en formular og dens elementer som objekter er vel retfærdiggjort
>af f.eks. DOM.
Enig
>Derudover har det en række fordele for webprogrammøren:
>
> * Seperation af en formulars data og præsentation
> * Sikker serverside validering
Ja, måske (mht. validering)
> * Nyttige abstraktioner som '$form->submitted' og '$form->valid'
Ja, måske.
> * Mulighed for at hente og gemme formdefinitionen i sproguafhængigt XML
> * Mulighed for gratis clientside validering
> * Mulighed for generering af SQL forespørgsler
> * Mulighed for generering af HTML
Måske.
>Alt i alt giver det mere effektiv og kompakt kode med færre fejl. Der findes
>flere forskellige implementationer
>(bl.a. i PEAR) , som understøtter ovenstående i større eller mindre grad.
Personligt har jeg valgt at bygge en meget avanceret dataklasse, der
netop varetager ovenstående punkter. Dog mener jeg ikke nødvendigvis,
at det har noget med templating at gøre (helst ikke IMHO da GUI og
business logic gerne skal være to seperate lag).
><?php
>
>$def = array('caption' => new FormText ('Sidens titel',
> array('match' => '/^[a-zA-Z ]{5,20}$/')),
> 'type' => new FormRadio ('Påkrævet brugerniveau',
> array('value' => 'user'),
> array('none' => 'Intet',
> 'user' => 'Registreret bruger',
> 'admin' => 'Administrator')),
> 'menu' => new FormCheckbox('Synlig i menu'),
> 'template' => new FormText ('Skabelon'),
> 'save' => new FormSubmit ('Gem'));
>
>$form = new Form('page', $def);
>
>if ($form->submitted && $form->valid) {
>
> print_r($form->getSubmitValues());
>
>}
>
>echo $form->toHtmlTable();
>
>?>
Det ser meget cute ud. Men det stadig giver nogle problemer.. Hvordan
definerer du et cpr-check (der rent faktisk regner efter om
checksummen er gyldig) eller for den sags skyld ISBN eller what ever.
Hvad med filer, der skal resamples og/eller koverteres til et andet
format ?
Hvad med kontroller, der fetcher en web/ftp/whatever-side pga. ting i
formen ?
Hvad hvis du ønsker et felt med WORM-egenskaber (write once read many)
eller READONLY felter afhængigt af brugerens rettigheder.
Derudover giver det stadig problemer (læs: fx. "the page you are
viewing has expired... pres refresh to contiue...") med back og
forward samt refresh.
Hvis man vil undgå det, kan man selvfølgelig bruge method="get" men så
kan du ikke uploade filer - og brugeren kan rette i samtlige variabler
i formen (ikke at der må være utjekkede variabler in the first place).
Men ideen med et "gratis" javascript tjek er ikke så dum, jeg må lige
bygge en JS-generator ind i min dataklasse :)
Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 -
http://www.krap.dk -
http://www.krap.net
PGP Key
http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022