Witam. Mam problem z pobraniem danych przez Ajax do Selecta. Założenie jest takie: Mam dwa pola select. Do pierwszego są pobierane nazwy producentów z bazy przy starcie skryptu. Na podstawie jaka nazwa zostanie wybrana przez użytkownika takimi danymi o modelach ma się zapełnić drugi select.
GetModelType:class GetModelType extends AbstractType
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('brandName', EntityType
::class, array( 'class' => Brand::class,
'placeholder' => '',
));
;
$formModifier = function (FormInterface $form, Brand $brand = null) {
$models = null === $brand ?
array() : $brand->getModels();
$form->add('modelName', EntityType
::class, array( 'class' => Model::class,
'placeholder' => '',
'choices' => $models,
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getModels());
}
);
$builder->get('brandName')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$brand = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $brand);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array( 'data_class' => Brand::class,
));
}
// ...
}
Controller:/**
* @Route("/aaa", name="create")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function createAction(Request $request)
{
$meetup = new Brand();
$form = $this->createForm(GetModelType::class, $meetup);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
}
return $this->render(
'default/create.html.twig',
array('form' => $form->createView()) );
}
Próbowałem wykorzystać przykład z dokumentacji,ale pojawia się bład:
Type error: Argument 2 passed to AppBundle\Form\GetModelType::AppBundle\Form\{closure}() must be an instance of AppBundle\Entity\Brand or null, instance of Doctrine\Common\Collections\ArrayCollection given, called in /home/.../src/AppBundle/Form/GetModelType.php on line 49
Mógłby mi ktoś wskazać gdzie popełniłem błąd,bo poruszam się tu po omacku (IMG:
style_emoticons/default/sad.gif)