Nette form afhandeling OOP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan terhuijzen

jan terhuijzen

26/11/2013 15:00:19
Quote Anchor link
Hallo mensen,

Ik heb een klein voorbeeld gemaakt van hoe ik later een formulier wil maken, volledig in OOP.
Ik heb veel afgekeken van het Zend framework, omdat dat ook heel goed in elkaar zit.
Wat vinden jullie hiervan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php


$form
= new Form;
$form->setMethod("post");

// voorbeeld
$form->addElement("textfield", "firstname", array(
                        
                        "attributes" => array("id" => "firstname_id", "size" => 30),
                        "filters" => array("trim", "capitalize"),
                        "validation" => array("empty"),
                        "validation" => array("noNumbers"),
                        "validation" => array("length" => array(3, 30));
                        "validation" => array("regexp" => "/[a-zA-Z]/");
                        
                        "errors" => array(
                                        "Vul een naam in",
                                        "De naam mag geen nummers bevatten",
                                        "Vul minimaal 3 tekens, en maximaal 30 tekens in",
                                        "Deze naam is ongeldig"
                                        );
                        )
);


?>


Ik vind het wel niet nodig om de HTML van een formulier te laten maken door PHP, dus de "elements" in het PHP gedeelte zijn een soort denkbeeldig element. De HTML is gewoon hard-coded in het HTML gedeelte.
Ik was eerst van plan om voor elk element een apart object te maken, en een Validatie object.
Dan zou je zo iets krijgen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

$form
= new Form;
$form->setMethod("post");

$nameField = new TextBar("firstname"); // name attribute van element (in constructor)
$nameField->addAttribute("id", "first-name-id");
$nameField->addFilter("trim", "capitalize");

$validator = new Validator;

// Volgorde bepaalt welke voorwaarde voorgaat
// Als het veld leeg is, hoeft er niet gecontroleerd te
// worden op lengte

$validator->addValidation("empty");
$validator->addValidation("length", array(3, 30));

// Volgorde bepaalt welke tekst bij welke controle hoort
$nameField->addErrorText("Vul een naam in");
$nameField->addErrorText("Te kort of te lang");

$nameField->setValidator($validator);

?>

Deze tweede optie is een heel stuk langer, maar lijkt me meer OOP achtig. Maar als je zou kijken naar Zend, dan doen ze het daar niet.

Zie ook deze link: http://framework.zend.com/manual/1.12/en/learning.quickstart.create-form.html
Gewijzigd op 26/11/2013 15:00:37 door Jan terhuijzen
 
PHP hulp

PHP hulp

20/04/2024 10:35:28
 
Wouter J

Wouter J

26/11/2013 15:01:41
Quote Anchor link
Als het goed is doet Zend intern in de addElement method hetzelfde als jij laat zien in het 2e voorbeeld.

PS: In de PHP wereld staat de Symfony Form component bekent als een van de beste, misschien een aanrader om daar eens naar te kijken.
 
Jan terhuijzen

jan terhuijzen

26/11/2013 15:18:59
Quote Anchor link
Ziet er mooi uit, maar is erg ingewikkeld
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.