Symfony2 - Festlegen und Abrufen von Optionen bei Verwendung einer Formularklasse

Ich verwende Formularklassen, um die verschiedenen Formulare in meinem Projekt zu erstellen.

In der Entity Type-Datei gibt es für die buildForm-Funktion einen sekundären Parameter von "array $ options" (dieser wird in der offiziellen Symfony 2-Dokumentation angezeigt, jedoch nie erwähnt!)

Ich habe ein Array in die Funktion createForm in meinem Controller eingegeben, bin aber jetzt völlig ratlos, wie ich die gespeicherten Werte abrufen kann.

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

Das einzige, was ich über das Abrufen der Optionen gefunden habe, ist die Verwendung der Funktion getOption (), die jedoch in Symfony 2 nicht vorhanden ist (der von mir gefundene Beitrag stammt aus dem Jahr 2010).

Ich habe versucht mit:

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

Aber wenn ich versuche, $ id irgendwo zu benutzen, bekomme ich den Fehler:

Hinweis: Undefinierter Index: ID

Was gibt?

Wie rufe ich meine Werte aus dem Array $ options ab? Stelle ich sie überhaupt richtig ein?

EDIT - Mehr Code:

Form Class

<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>

Antworten auf die Frage(6)

Ihre Antwort auf die Frage