[php] Ideale form generating class?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50
Hoi!
Ik cood al een flinke tijd PHP, en tot nu toe maak ik mijn formpjes altijd met de hand. Voor specifieke projecten heb ik wel eens delen gegenereerd, met stukken die ik zelf heb geschreven, maar ik heb nog nooit met een algemene form-generating class gebruikt. Ik heb nu in een project niet echt zin om weer diverse formuliertjes te gaan coden voor insert-update dingen, met validation etc, en moet dat dus maar's efficienter gaan aanpakken.
Nu zijn er op internet erg veel form generating dingen: ze zitten in pear, maar er zijn ook diverse losse. Die kan ik ook zo vinden, maar ik zie door de bomen het bos niet meer. (Results 1 - 10 of about 42,300,000 for php form class)
Ik besef dat deze vraag een beetje "google-eens" -achtig overkomt, maar wil juist een discussie WAAROM ik een bepaalde classe zou moeten gebruiken, en die juist zo goed is.
Volgens mij zou een goede classe tenminste aan de volgende eisen moeten voldoen (maar ook hier hoor ik graag kritiek op):
  • eenvoudig opzetten van forms (via arrays, database, whatever).
  • zowel Client als server side validation.
  • (liefst) zelf db afhandeling, of eenvoudige manier om dit te syncen
Wat gebruiken jullie voor het maken van formuliertjes?

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Ik denk dat je beter kunt zoeken naar "crud" in plaats van "form", want dat is wat je eigenlijk zoekt :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Aan je lijstje voldoet PEAR::DB_Table prima en ik vind 't een erg geschikte tool om snel formuliertjes mee op te maken.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ik werk met:

Pear HTML_Quickform
PHP doctrine.

En dat ziet er dan zo uit:

PHP:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public function brandFormAction() {
        
        $form =& new HTML_QuickForm('firstForm','post','/brandForm');
        $renderer =& new HTML_QuickForm_Renderer_Tableless();
        $request = Zend::registry('request');
        $conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        
        //Bouw de tabstrip
        $tabstrip = new Tabstrip('firstForm' , SITE_URL, true);
        $tabstrip->addTab('brandForm/'.$this->_getParam('brand_id'), 'Merk');
        $tabstrip->addTab('brandImages/'.$this->_getParam('brand_id'), 'Afbeeldingen');

        if($this->_getParam('brand_id')) {
            $form->addElement('hidden', 'id', $this->_getParam('brand_id'));
        
            $product_brand_table = $conn->getTable("Product_Brand");
            $brand = $product_brand_table->find($this->_getParam('brand_id'));
            
            $form->setDefaults(array(
                'name' => $brand->name,
                'code' => $brand->code,
                'description' => $brand->description
                
            ));
        }
        
        $form->addElement('header', null, 'Merk toevoegen/wijzigen');
        $form->addElement('hidden', 'redirect_url', $request->get('redirect_url'), array('id' => 'redirect_url'));
        $form->addElement('text', 'name', 'Merk naam:', array('maxlength' => 255));
        $form->addElement('text', 'code', 'Merk code:', array('maxlength' => 255));
        $form->addElement('textarea', 'description', 'Merk omschrijving', array('size' => 50) );
        $form->addElement('submit', null, 'Bewaar', array('class' => 'submit-button') );

        $form->addRule('name', 'Vul een merknaam in', 'required', null, 'client');

        if ($form->validate()) {
            $this->_forward('brand','brandCreate');
        }
        else {
            // Output the form
            //$form->display(); 
            $form->accept($renderer);
            $view = Zend::registry('view');
            $view->addViewScript('brandFormView.php');
            $view->tabstrip = $tabstrip->toHtml();
            $view->form = $renderer->toHtml();
        }   
    }
    
    public function brandCreateAction() 
    {
        $request = Zend::registry('request');
    
        if($request->get('id')) {
            $conn = Doctrine_Manager::getInstance()->getCurrentConnection();
            $product_brand_table = $conn->getTable("Product_Brand");
            $brand = $product_brand_table->find($request->get('id'));
        }
        else {
            $brand = new Product_Brand();
        }
        
        $brand->name = $request->get('name');
        $brand->description = $request->get('description');
        $brand->code = $request->get('code');
        $brand->save();
        
        if($request->get('redirect_url') == "") {
            $this->_redirect('/brandForm/'.$brand->id);
        }
        else {
            $this->_redirect($request->get('redirect_url'));
        }
    }


- Je hoeft je niet meer druk te maken om error afhandeling enzo. Zowel client als server side.
- Form defaults kan je makkelijk aangeven.
- Er zijn verschillende form renderers beschikbaar...
- Er is een enorme verscheidenheid aan formulier velden beschikbaar in Pear HTML_Quickform.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 15:31

orf

Ik ben behoorlijk fan van Formhandler.
Een goed geschreven, goed gedocumenteerde class voor formulieren, met alle denkbare velden.

Doordat het een Nederlands project is heb je ook gelijk de juiste validatie voor postcodes, telefoonnummers, etc.

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
* rewind. is absoluut met orf eens

gebruik het sinds ik het heb bij ieder project!

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
orf schreef op donderdag 11 januari 2007 @ 21:25:
Doordat het een Nederlands project is heb je ook gelijk de juiste validatie voor postcodes, telefoonnummers, etc.
Bij postcodes mogen een aantal combinaties van letters niet gebruikt worden (SA, SD en SS) welke wel door de validatie heen komen. Ook is de telefoonnummer controle erg gebrekkig als je het naast het betreffende wikipedia artikel legt.

[ Voor 4% gewijzigd door PrisonerOfPain op 12-01-2007 00:39 ]

Pagina: 1