protected function getForm( StructureInterface $structure )
    {
        /* @var $form \Zend\Form\Form */
        /* @var $type \Zend\Form\Form */
        $service = $this->getServiceLocator()
                        ->get( 'Form' );
        $form    = $service->create( 'Grid\Menu\Meta\Base' );
        $meta    = $service->get( 'Grid\Menu\Meta\Type' );
        $type    = $structure->getType();

        if ( $meta->has( $type ) )
        {
            foreach ( $meta->get( $type ) as $element )
            {
                $form->add( clone $element );
            }
        }

        $form->add( array(
            'type'  => 'Zork\Form\Element\Submit',
            'name'  => 'save',
            'attributes' => array(
                'value'  => 'menu.form.submit',
            ),
        ) );

        $form->setHydrator( $this->getModel()->getMapper() )
             ->bind( $structure );

        return $form;
    }