« Return to Thread: Zend_Form : Subforms, dynamic element creation and best practices

Re: Zend_Form : Subforms, dynamic element creation and best practices

by weierophinney :: Rate this Message:

Reply to Author | View in Thread

-- Bill P. <maxarbos@...> wrote
(on Monday, 30 June 2008, 01:40 PM -0700):

> I am trying to understand the best recommend way to implement a form using
> Zend_Form. There seem to be a number of different ways in implementing and
> rendering them.
>
> Here is my situation:
>
> We are developing an application and will be using a number of ZF components:
> _DB, _Auth, _ACL, _View, _Layout, _Controller, etc...  as well as _Form.
>
> When we want to built and show a form, we call a model like: TestingForm.php
> from TestingController.php
>
> The TestingController.php has a method:
> getTestingForm() {
>    $this->_myform = new TestingForm(array('action'=>testing/process', 'method'
> =>'post'));
> }
>
>
> The TestingForm.php is built as such:
> TestForm extends Zend_Form {
>    public function __construct($options=null) {
>           parent::__construct($options);
>
>      $this->setAttrib('accept-charset', 'UTF-8');
> }

I'd place the above in setAttrib() call as the first call in your init()
method below, and get rid of __construct() entirely.

>    public function init() {
>      $name = $this->addElement('text', 'name', array().....);
> }
>
> }
>
>
>
>
> So now on my display page with the form, I have an action
> indexAction() {
>      $this->view->testform = $this->getTestingForm();
> }
>
> and the view is:
> <?php echo $this->testform; ?>
>
>
> =================
>
> Is this recommened?

This is how I do most of my forms, and how I recommend doing forms in my
presentations and webinars.

> 2)  I want to be able to add elements dynamically to the form depending on a
> result set of data from the db.
>
> Say a person has 4 children, I want to dynamically add four text elements to
> the form, one for each record retrieved from the db.
>
> How can I do this with my setup?

Yes. Create an element for each child, and attach each with a different
form element name:

    foreach ($children as $key => $child) {
        $form->addElement('text', 'child' . $key, array('value' => $child'));
    }

--
Matthew Weier O'Phinney
Software Architect       | matthew@...
Zend Framework           | http://framework.zend.com/

 « Return to Thread: Zend_Form : Subforms, dynamic element creation and best practices