Symfony2: ¿Cómo configurar y obtener opciones al usar una Clase de formulario?

Estoy utilizando clases de formulario para crear los distintos formularios en mi proyecto.

En el archivo de tipo de entidad, para la función buildForm, hay un parámetro secundario de "array $ options" (esto se muestra en la documentación oficial de Symfony 2, ¡pero nunca se menciona, nunca!)

¿He introducido una matriz en la función createForm en mi controlador pero ahora estoy totalmente perplejo sobre cómo recuperar los valores almacenados?

<code>$form = $this->createForm(new ProductType(array(), array('id' => '2')), $product);
</code>

Lo único que he encontrado acerca de cómo obtener las opciones es usar la función getOption (), pero eso no existe en Symfony 2 (la publicación que encontré fue de 2010).

Intenté usar:

<code>$id = $options['id'];
</code>

Pero cuando trato de usar $ id en cualquier lugar, me sale el error:

Aviso: Indice no definido: id

¿Lo que da?

¿Cómo recupero mis valores de la matriz $ options? ¿Estoy configurándolos correctamente en primer lugar?

EDITAR - Más código:

Clase de formulario

<code><?php

namespace DEMO\DemoBundle\Form\Product;

use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class ProductType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('slug')
            ->add('reference')
            ->add('description')
            ->add('active_from')
            ->add('active_till')
            ->add('is_active')
            ->add('category', 'entity', array(
                'class' => 'DEMO\DemoBundle\Entity\Product\ProductCategory',
                'query_builder' => function(EntityRepository $er) {
                    return $er->createQueryBuilder('u')
                        ->where('u.section = :id')
                        ->setParameter('id', ***ID VARIABLE NEEDS TO GO HERE***)
                        ->orderBy('u.root', 'ASC')
                        ->addOrderBy('u.lft', 'ASC');
                },
                'empty_value' => 'Choose an option',
                'property' => 'indentedName',
            ));
    }

    public function getDefaultOptions()
    {
        return array(
            'data_class' => 'DEMO\DemoBundle\Entity\Product\Product'
        );
    }

    public function getName()
    {
        return 'demo_demobundle_product_type';
    }
}
</code>

Respuestas a la pregunta(6)

Su respuesta a la pregunta