src/Form/VehicleRtsActivityStorageType.php line 20

  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Cities;
  4. use App\Entity\Regions;
  5. use App\Entity\VehicleRtsActivityStorage;
  6. use App\Entity\Warehouses;
  7. use Doctrine\ORM\EntityRepository;
  8. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  9. use Symfony\Component\Form\AbstractType;
  10. use Symfony\Component\Form\FormBuilderInterface;
  11. use Symfony\Component\OptionsResolver\OptionsResolver;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. /**
  14.  * Class VehicleRtsActivityStorageType
  15.  * @package App\Form
  16.  */
  17. class VehicleRtsActivityStorageType extends AbstractType
  18. {
  19.     /**
  20.      * @var Translator
  21.      */
  22.     protected $translator;
  23.     /**
  24.      * VehicleRtsActivityStorageType constructor.
  25.      * @param Translator|null $translator
  26.      */
  27.     public function __construct(TranslatorInterface $translatornull)
  28.     {
  29.         $this->translator $translator;
  30.     }
  31.     /**
  32.      * {@inheritdoc}
  33.      */
  34.     public function buildForm(FormBuilderInterface $builder, array $options)
  35.     {
  36.         $trans               $this->translator;
  37.         $warehouseValidation $trans->trans('you should select a warehouse', [], 'validators');
  38.         $oldWarehouseId $options'oldWarehouseId'];
  39.         $builder->add('region'EntityType::class, array(
  40.                 'label'        => 'Region',
  41.                 'class'        => Regions::class,
  42.                 'choice_label' => 'name'.ucfirst($options['locale']),
  43.                 'placeholder'  => 'Please Select',
  44.                 'mapped'       => false,
  45.                 'required'     => false
  46.             ))
  47.             ->add('city'EntityType::class, array(
  48.                 'label'        => 'City',
  49.                 'class'        => Cities::class,
  50.                 'choice_label' => 'name'.ucfirst($options['locale']),
  51.                 'placeholder'  => 'Please Select',
  52.                 'required'     => false,
  53.                 'mapped'       => false,
  54.             ))
  55.             ->add('warehouse'EntityType::class, array(
  56.                 'label'        => 'Warehouse',
  57.                 'class'        => Warehouses::class,
  58.                 'query_builder' => function (EntityRepository $er) use ($oldWarehouseId) {
  59.                     $qb $er->createQueryBuilder('Warehouses');
  60.                     $qb->select('Warehouses')
  61.                         ->where('Warehouses.isActive = 1');
  62.                     if($oldWarehouseId){
  63.                         $qb->OrWhere('Warehouses.warehouseId = :warehouseId')
  64.                         ->setParameter('warehouseId',$oldWarehouseId);
  65.                     }
  66.                     return $qb;
  67.                 },
  68.                 'choice_label' => 'name',
  69.                 'placeholder'  => 'Please Select',
  70.                 'required'     => true,
  71.                 'attr'         => ['validate-msg' => $warehouseValidation]
  72.             ));
  73.     }
  74.     
  75.     /**
  76.      * {@inheritdoc}
  77.      */
  78.     public function configureOptions(OptionsResolver $resolver)
  79.     {
  80.         $resolver->setDefaults(array(
  81.             'data_class'         => VehicleRtsActivityStorage::class,
  82.             'translation_domain' => 'vehicles',
  83.             'locale'             => 'en',
  84.             'oldWarehouseId'       => null
  85.         ));
  86.     }
  87.     /**
  88.      * {@inheritdoc}
  89.      */
  90.     public function getBlockPrefix()
  91.     {
  92.         return 'appbundle_vehiclertsactivitystorage';
  93.     }
  94. }