Moje encje Właściciel(Owner)jeden do wielu (Nieruchomość)jeden do wielu Wpłata(Donation)
Tworze formularz dodający nową wpłatę w formularzu są do wyboru dwie encje : Właściciel i Nieruchomość. Chcę aby po wyborze encji Właściciela był wybór tylko tych nieruchomości, które on posiada. Może mały przykład ktoś wrzuci. Jak to można rozwiązać. Dodałem do encji Property eventlistener. ale zwracami pustą tablicę.
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$user = $options['user'];
$builder
->add('name', TextType::class,
'label' => 'Nazwa wpłaty'))
->add('price', MoneyType::class,
'label' => 'Cena',
'currency' => 'false'
))
->add('createDate', DateType::class,
'label' => 'Data',
'widget' => 'choice',
))
->add('owner', EntityType::class,
'label' => 'Właściciel',
'class' => 'Property\ManagementBundle\Entity\Owner',
'choice_label' =>function($Owner) {
return $Owner->getName().''.$Owner->getAdress();
},
'required' => false,
'empty_value' => 'Wybierz właściciela',
'query_builder' => function(OwnerRepository $o) use ($user) {
return $o->createQueryBuilder('o')
->select('o,p')
->Join('o.property', 'p')
->where('o.user = :user')
->setParameter('user', $user);
}
));
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
dump($data);
$owner = $data->getOwner();
$property = null === $owner ?
array() : $owner->getAvailableProperty();
$form->add('property', EntityType
::class, array( 'class' => 'Property\ManagementBundle\Entity\Property',
'property' =>'adress',
'empty_value' => 'Wybierz nieruchomość',
'choices' => $property,
));
}
);
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array( 'data_class' => 'Property\ManagementBundle\Entity\Donation',
'user' => null
));
}