src/Form/MachineCostMatrixType.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\MachineCostMatrix;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  6. use Symfony\Component\Form\Extension\Core\Type\MoneyType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8. use Symfony\Component\Form\FormEvent;
  9. use Symfony\Component\Form\FormEvents;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. class MachineCostMatrixType extends AbstractType
  12. {
  13.     public function buildForm(FormBuilderInterface $builder, array $options): void
  14.     {
  15.         $builder
  16.             ->add('startQty'IntegerType::class, [
  17.                 'label' => false,
  18.                 'attr' => [
  19.                     'class' => 'text-end'
  20.                 ]
  21.             ])
  22.             ->add('cost'MoneyType::class, [
  23.                 'currency' => 'USD',
  24.                 'scale' => 4,
  25.                 'label' => false,
  26.                 'attr' => [
  27.                     'class' => 'text-end'
  28.                 ]
  29.             ]);
  30.         $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
  31.             /** @var $data MachineCostMatrix|mixed */
  32.             $data $event->getData();
  33.             $form $event->getForm();
  34.             if (is_null($data)){
  35.                 $totalCost 0;
  36.             }else{
  37.                 $totalCost $data->getStartQty() * $data->getCost();
  38.             }
  39.             $form->add('totalCost'MoneyType::class, [
  40.                 'mapped' => false,
  41.                 'data' => $totalCost,
  42.                 'currency' => 'USD',
  43.                 'scale' => 4,
  44.                 'label' => false,
  45.                 'attr' => [
  46.                     'class' => 'text-end',
  47.                     'disabled' => true
  48.                 ]
  49.             ]);
  50.         });
  51.     }
  52.     public function configureOptions(OptionsResolver $resolver): void
  53.     {
  54.         $resolver->setDefaults([
  55.             'data_class' => MachineCostMatrix::class,
  56.         ]);
  57.     }
  58. }