Solid Rhino
Solid Rhino

Reputation: 1895

How to use data from Zend_Db_Table in a Zend_Form

I have create a form class for editing deleting and add users to a database. If I want to edit a user how can I simply supply the information of the user to the form.

I use a Zend_Db_Table to get the data from the database.

This is the userForm class:

class UsersForm extends Zend_Form
{
    public function init ()
    {
        $username = new Zend_Form_Element_Text('username',array(
            'validatrors' => array(
                'alpha',
                array('stringLength',5,10)
                ),
            'filters'   => array(
                'StringToLower'
                ),
            'required'  => true,
            'label'     => 'Gebruikersnaam:'
            ));

        $password = new Zend_Form_Element_Password('password', array(
            'validators'=> array(
                'Alnum',
                array('StringLength', array(6,20))
                ),
            'filters'   => array('StringTrim'),
            'required'  => true,
            'label'     => 'Wachtwoord:'
            ));

        $actif = new Zend_Form_Element_Checkbox('actif', array(
            'label'     => 'actif'));

        $this->addElements(array($username,$password,$actif));

        $this->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')),
            array('Description',array('placement' => 'prepand')),
            'Form'
        ));
    }
}

Thank you,

Ivo Trompert

Upvotes: 1

Views: 1119

Answers (2)

Greg
Greg

Reputation: 10360

one of the 'fetchXXX' or 'find' methods on your extended Db_Table will return a Rowset, calling current() on that will give you a Row, which has a toArray method that will give you the format tharkun's response is asking for.

Upvotes: 0

markus
markus

Reputation: 40675

This is done with:

$form->populate($data);

where $data is an array with your table-row-data where the field names have to match the ones from the form. Zend will do the rest.

Upvotes: 4

Related Questions