Zend_Form default value

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 19-09 22:44
Editz:
Ik heb het hele systeem overhoop gehaald, antwoord op de vraag is dus niet meer nodig.


Aloha, hier ben ik (weer, gisteren ook al 'shame') met een vraag.

Aangezien er geen Scaffolding classe is in Zend, ben ik bezig om zelf één te maken.

Het ophalen van de kolommen van de DB, en de kolomtypes (varchar, datetime) e.d gaat prima, aan de hand van de typee beslis ik wat voor input element er moet verschijnen.

So far so good, maar nu doe ik op het element

PHP:
1
$element->setValue('waarde'); //momenteel staat er letterlijk waarde, zodat ik weet dat waarde niet leeg is


maar er verschijnt niets op het beeld? (niet als waarde that is).

Als ik het zo doe, en ik de regel voor ik het element toevoeg aan de form kijk wat de value is doet hij het prima. Maar daarna is hij ineens weg?

Ik dacht, vreemd, dus ik ga een losse pagina schrijven met een simpel formuliertje, en daar werkt het wel ineens. 8)7

Simpel formulier code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
        $form = new Zend_Form;
        $form->setMethod('post');
        $element = new Zend_Form_Element_Text('something');
        $element->setLabel('hi');
        $element->setValue('justwork');
        
        if($form->isValid($_POST)) {
        
        }
        $form->addElement($element);
        echo $form->render();


Maar wanneer ik dus mijn scaffolding gedeelte eromheen brij is de value nergens meer te bekennen. (Values die via S_POST vertrekken worden wel weer automatisch ingevuld bij value).

Hier mijn code (sommige dingen zijn gestript)
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
$form = new Zend_Form;
$form->setMethod('post');

$tablecolumns = $this->_table->describeTable(); //Haalt de informatie op van kolommen van de huidige tabel

foreach($tablecolumns as $tablecolumn) { //Loopen door alle kolommen
    $element = null;

    if($tablecolumn['DESCRIPTION'] != "") { //Deze kolom heeft een beschrijving, mag getoond worden in formulier

        $type = $tablecolumn['DATA_TYPE']; //Type kolom (varchar, int, text e.d)
        
        if(in_array(strtolower($type), $this->_fieldTypes['text'])) { //Kolom is een text type, maak textvakje
            $element = new Zend_Form_Element_Text($tablecolumn['COLUMN_NAME']);
            //var_dump($row[$tablecolumn['COLUMN_NAME']]);
            $element->setValue('justwork'); //////HIIIEEERR zet ik dus de setValue op justwork
        }
        //Hier nog andere controles, voor een datum vakje, textarea e.d
        else { //Niks gevonden gooi een exeptie
            throw new Exception('DataType for ' . $type . ' has no valid object (textfield, textarea ....)', E_USER_ERROR);
        }
        
        $element->setLabel(translate($tablecolumn['DESCRIPTION'])); //Translate is een eigen functie, welke vertaald DESCRIPTION is de database kolom descriptie (dit is de label bij de input)
        var_dump($element->getValue()); //Hier nog even een var_dump, waar netjes justwork uitkomt
        $form->addElement($element); //Element toevoegen aan form
    }
}

//Submit knop toevoegen
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel(translate('submit'));
$form->addElement($submit);

//Controle
if($form->isValid($_POST)) {
    //Save all the info
    
    $this->view->postInfo = translate('savedData');
}

echo $form->render(); //En tonen maar


Iemand enig idee waar het aan ligt?

[ Voor 1% gewijzigd door ZpAz op 27-06-2009 00:14 . Reden: Overhoop halen systeem, antwoord niet meer benodigd. ]

Tweakers Time Machine Browser Extension | Chrome : Firefox