Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace GCS\ManagerBundle\Form\Type;
- use Symfony\Component\DependencyInjection\ContainerAware;
- use Symfony\Component\Form\AbstractType;
- use Symfony\Component\Form\FormBuilderInterface;
- use Symfony\Component\OptionsResolver\OptionsResolverInterface;
- use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
- use Symfony\Component\Form\FormEvent;
- use Symfony\Component\Form\FormEvents;
- use Doctrine\ORM\EntityRepository;
- use GCS\ManagerBundle\Entity\Building;
- class GuestPopulationFormType extends AbstractType
- {
- private $options;
- private $manager;
- public function __construct($manager, array $options = null)
- {
- $this->options = $options;
- $this->manager = $manager; // Get kernel
- }
- public function buildForm2(FormBuilderInterface $builder, array $options){
- parent::buildForm($builder, $options);
- // добавление пользовательского поля
- $builder
- ->add('buildingId', 'choice', array('required' => false, 'multiple' => false, 'expanded' => false), array('auto_initialize' => false))
- ->add('floorId', 'choice', array('required' => false, 'multiple' => false, 'expanded' => false))
- ->add('roomId', 'choice', array('required' => false, 'multiple' => false, 'expanded' => false))
- ;
- }
- public function buildForm(FormBuilderInterface $builder, array $options){
- parent::buildForm($builder, $options);
- // Стартовый первый селект выбора строения
- $builder->add('buildingId', 'entity', array(
- 'class' => 'GCS\ManagerBundle\Entity\Building',
- 'required' => true,
- 'multiple' => false,
- 'expanded' => false,
- 'label' => 'Select building',
- 'query_builder' => function(EntityRepository $er) {
- return $er->createQueryBuilder('c')
- ->select('c')
- ->where("c.hotelId = :hotel_id")
- ->setParameter('hotel_id', 1);
- },
- ));
- $builder
- ->add('floorId', 'choice', array('required' => false, 'multiple' => false, 'expanded' => false))
- ->add('roomId', 'choice', array('required' => false, 'multiple' => false, 'expanded' => false));
- $formAddFloor = function ($form, $data = null) {
- $id = $data->getId();
- $form->add('floorId', 'entity', array(
- 'class' => 'GCS\ManagerBundle\Entity\Floor',
- 'required' => true,
- 'multiple' => false,
- 'expanded' => false,
- 'query_builder' => function(EntityRepository $er) use ($id) {
- return $er->createQueryBuilder('c')
- ->select('c')
- ->where("c.hotelId = :hotel_id and c.fbuilding = :building_id")
- ->setParameter('hotel_id', 1)
- ->setParameter('building_id', $id);
- },
- ));
- };
- $formAddRoom = function ($form, $data = null) {
- echo __LINE__;
- $id = $data->getId();
- $form->add('floorId', 'entity', array(
- 'class' => 'GCS\ManagerBundle\Entity\Room',
- 'required' => true,
- 'multiple' => false,
- 'expanded' => false,
- 'query_builder' => function(EntityRepository $er) use ($id) {
- return $er->createQueryBuilder('c')
- ->select('c')
- ->where("c.hotelId = :hotel_id and c.fbuilding = :building_id")
- ->setParameter('hotel_id', 1)
- ->setParameter('building_id', $id);
- },
- ));
- };
- $builder->get('floorId')->addEventListener(
- FormEvents::POST_SUBMIT,
- function (FormEvent $event) use ($formAddRoom) {
- echo __LINE__;
- $formAddRoom($event->getForm()->getParent(), $event->getForm()->getData());
- }
- );
- $builder->get('buildingId')->addEventListener(
- FormEvents::POST_SUBMIT,
- function (FormEvent $event) use ($formAddFloor) {
- $formAddFloor($event->getForm()->getParent(), $event->getForm()->getData());
- }
- );
- }
- public function setDefaultOptions(OptionsResolverInterface $resolver){
- //$resolver->setDefaults(array(
- // 'data_class' => 'GCS\GuestBundle\Entity\Guest'
- // ));
- }
- public function getName(){
- return 'gcs_guest_registration';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement