Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener::onBindNormData PHP Method

onBindNormData() public method

public onBindNormData ( Symfony\Component\Form\Event\FilterDataEvent $event )
$event Symfony\Component\Form\Event\FilterDataEvent
    public function onBindNormData(FilterDataEvent $event)
    {
        $form = $event->getForm();
        $data = $event->getData();

        if (null === $data) {
            $data = array();
        }

        if (!is_array($data) && !$data instanceof \Traversable) {
            throw new UnexpectedTypeException($data, 'array or \Traversable');
        }

        if ($this->allowDelete) {
            foreach ($data as $name => $child) {
                if (!$form->has($name)) {
                    unset($data[$name]);
                }
            }
        }

        $event->setData($data);
    }

Usage Example

 public function testOnBindNormDataDealsWithNullData()
 {
     $this->form->add($this->getForm('1'));
     $data = null;
     $event = new FilterDataEvent($this->form, $data);
     $listener = new ResizeFormListener($this->factory, 'text', array(), false, true);
     $listener->onBindNormData($event);
     $this->assertEquals(array(), $event->getData());
 }