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>