Używam klas formularzy do budowania różnych formularzy w moim projekcie.Symfony2 - Jak ustawić i uzyskać opcje przy korzystaniu z klasy formularza?
W pliku typu jednostki, dla funkcji buildForm, jest wtórny parametr „tablicy $ options” (jest to pokazane na oficjalnej Symfony 2 dokumentacji, ale nie wspomniał, nigdy!)
mam wprowadziłem tablicę do funkcji createForm w moim kontrolerze, ale teraz jestem całkowicie zaskoczony, jak odzyskać zapisane wartości?
$form = $this->createForm(new ProductType(array(), array('id' => '2')), $product);
Jedyne co znalazłem o uzyskanie opcji jest za pomocą funkcji getOption(), ale nie istnieje w Symfony 2 (post znalazłem był od 2010 roku).
Próbowałem za pomocą:
$id = $options['id'];
Ale gdy próbuję użyć $ id wszędzie, pojawia się błąd:
Notice: Undefined index: id
Co daje?
Jak mogę odzyskać moje wartości z tablicy $ options? Czy w pierwszej kolejności ustawiam je poprawnie?
EDIT - Więcej kod:
Formularz Klasa
<?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';
}
}
To była moja odpowiedź, nie greg0ires ... – Flukey
Niestety, jest to zaimplementowane z greg0ires odpowiedzią, skopiowałem kod niepoprawnie. Zmieniono to, aby to wyczyścić –
ok :) dzięki za wyczyszczenie go – Flukey