src/Form/VehicleRtsActivityStorageType.php line 64
<?php
namespace App\Form;
use App\Entity\Cities;
use App\Entity\Regions;
use App\Entity\VehicleRtsActivityStorage;
use App\Entity\Warehouses;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* Class VehicleRtsActivityStorageType
* @package App\Form
*/
class VehicleRtsActivityStorageType extends AbstractType
{
/**
* @var Translator
*/
protected $translator;
/**
* VehicleRtsActivityStorageType constructor.
* @param Translator|null $translator
*/
public function __construct(TranslatorInterface $translator= null)
{
$this->translator = $translator;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$trans = $this->translator;
$warehouseValidation = $trans->trans('you should select a warehouse', [], 'validators');
$oldWarehouseId = $options[ 'oldWarehouseId'];
$builder->add('region', EntityType::class, array(
'label' => 'Region',
'class' => Regions::class,
'choice_label' => 'name'.ucfirst($options['locale']),
'placeholder' => 'Please Select',
'mapped' => false,
'required' => false
))
->add('city', EntityType::class, array(
'label' => 'City',
'class' => Cities::class,
'choice_label' => 'name'.ucfirst($options['locale']),
'placeholder' => 'Please Select',
'required' => false,
'mapped' => false,
))
->add('warehouse', EntityType::class, array(
'label' => 'Warehouse',
'class' => Warehouses::class,
'query_builder' => function (EntityRepository $er) use ($oldWarehouseId) {
$qb = $er->createQueryBuilder('Warehouses');
$qb->select('Warehouses')
->where('Warehouses.isActive = 1');
if($oldWarehouseId){
$qb->OrWhere('Warehouses.warehouseId = :warehouseId')
->setParameter('warehouseId',$oldWarehouseId);
}
return $qb;
},
'choice_label' => 'name',
'placeholder' => 'Please Select',
'required' => true,
'attr' => ['validate-msg' => $warehouseValidation]
));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => VehicleRtsActivityStorage::class,
'translation_domain' => 'vehicles',
'locale' => 'en',
'oldWarehouseId' => null
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_vehiclertsactivitystorage';
}
}