ZF2-371: Fieldsets not being populated on submit

Description

Fieldsets within a form are not being populated when the form is submitted.

For example, I have the following does not return the expected array with the data values:

h3. Controller



    public function indexAction(){
       $form = new MyForm();
       $request = $this->getRequest();
              if ($request->isPost()) {
                     $form->setData($request->post());
                     if ($form->isValid()) {
                            //Do something
                            print_r($form->getData()); //for debug
                     }
              }
       return array('form' => $form);
    }

h3. MyForm.php



    class MyForm extends Form
    {
        public function __construct()
        {
            parent::__construct();
            $this->setName('myForm');
            $this->setAttribute('method', 'post');
            
            $this->add(array(
                        'name' => 'title',
                        'attributes' => array(
                        'type'  => 'text',
                        'label' => 'Title',
                        ),
                     ));

            $this->add(new MyFieldset('myfieldset'));
            
            //setting InputFilters here
            $inputFilter = new InputFilter();
            $factory = new InputFactory();
           
            $inputFilter->add($factory->createInput(array(
                'name'     => 'title',
                'required' => true,
                'filters'  => array(
                    array('name' => 'StripTags'),
                    array('name' => 'StringTrim'),
                ),
            )));
            
            //Now add fieldset Input filter
            foreach($this->getFieldsets() as $fieldset){
                  $fieldsetInputFilter = $factory->createInputFilter($fieldset->getInputFilterSpecification());
                  $inputFilter->add($fieldsetInputFilter,$fieldset->getName());
            }

            //Set InputFilter
            $this->setInputFilter($inputFilter);
        }
    }

h3. MyFieldset.php



    class MyFieldset extends Fieldset implements InputFilterProviderInterface{
        public function __construct($name)
        {
            parent::__construct($name);
            $factory = new Factory();
        
            $this->add($factory->createElement(array(
                'name' => $name . 'foo',
                'attributes' => array(
                    'type'  => 'text',
                    'label' => 'Foo',
                ),
            )));
        }
        
        public function getInputFilterSpecification(){
            return array(
                'foo' => array(
                    'required' => true,
                    'filters'  => array(
                        array('name' => 'StripTags'),
                        array('name' => 'StringTrim'),
                    ),
                ),
            );
        }
    }

I am able to output the form as expected and I end up with two input elements named 'title' and 'myfieldsetfoo' (the name given when outputing with the ViewHelper). So of course when I submit the raw post will show values for 'title' and 'myfieldsetfoo'. However, when I use SetData() the values for the field set are not being populated (although I can see the values in the raw post object). Instead, examining the output of '$form->getData()' I receive:


    Array(
       [title] => Test,
       [myfieldset] => Array(
                             [foo] =>
                            )
    )

Comments

Seems to work with me, form with fieldsets is validated & populated as intended.

https://github.com/zendframework/zf2/… shows how to return fieldset input filter specs.

Best regards, Jade

Jade- Not sure what you are seeing that is incorrect with the return of the input filter. Please advise since i am still seeing an issue -jaime

This issue has been closed on Jira and moved to GitHub for issue tracking. To continue following the resolution of this issues, please visit: https://github.com/zendframework/zf2/issues/2493