src/Form/MachineType.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Machine;
  4. use App\Entity\PaperSize;
  5. use App\Entity\Task;
  6. use Doctrine\ORM\EntityRepository;
  7. use Doctrine\ORM\QueryBuilder;
  8. use phpDocumentor\Reflection\Types\Integer;
  9. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  12. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  13. use Symfony\Component\Form\Extension\Core\Type\MoneyType;
  14. use Symfony\Component\Form\Extension\Core\Type\PercentType;
  15. use Symfony\Component\Form\FormBuilderInterface;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. class MachineType extends AbstractType
  18. {
  19.     public function buildForm(FormBuilderInterface $builder, array $options): void
  20.     {
  21.         $builder
  22.             ->add('name')
  23.             ->add('code')
  24.             ->add('parent'EntityType::class,[
  25.                 'class' => Machine::class,
  26.                 'placeholder' => 'Choose Type',
  27.                 'choice_label' => 'name',
  28.                 'query_builder' => function (EntityRepository  $er): QueryBuilder {
  29.                     return $er->createQueryBuilder('m')
  30.                         ->orderBy('m.name''ASC');
  31.                 },
  32.                 'required' => false
  33.             ])
  34.             ->add('invoiceDescription')
  35.             ->add('technicalNotes')
  36.             ->add('setupTime'IntegerType::class, [
  37.                 'label' => 'Setup Time (min)',
  38.                 'attr' => [
  39.                     'class' => 'text-end'
  40.                 ]
  41.             ])
  42.             ->add('rate'MoneyType::class, [
  43.                 'label' => 'Cost/min',
  44.                 'currency' => 'USD',
  45.                 'attr' => [
  46.                     'class' => 'text-end'
  47.                 ]
  48.             ])
  49.             ->add('waste'IntegerType::class, [
  50.                 'label' => 'Waste (sheets)',
  51.                 'attr' => [
  52.                     'class' => 'text-end'
  53.                 ]
  54.             ])
  55.             ->add('spoilage'PercentType::class, [
  56.                 'scale'=> 2,
  57.                 'attr' => [
  58.                     'class' => 'text-end'
  59.                 ]
  60.             ])
  61.             ->add('tasks'EntityType::class, [
  62.                 'class' => Task::class,
  63.                 'multiple' => true,
  64.                 'expanded' => true,
  65.                 'choice_label' => 'name',
  66.                 'by_reference' => false
  67.             ] )
  68.             ->add('paperSizes'EntityType::class, [
  69.                 'class' => PaperSize::class,
  70.                 'multiple' => true,
  71.                 'expanded' => true,
  72.                 'choice_label' => 'name',
  73.                 'by_reference' => false
  74.             ])->add('machineTimeMatrices'CollectionType::class,[
  75.                 'entry_type' => MachineTimeMatrixType::class,
  76.                 'entry_options' => [
  77.                     'label' => false
  78.                 ],
  79.                 'allow_add' => true,
  80.                 'allow_delete' => true,
  81.                 'by_reference' => false,
  82.                 'prototype' => true,
  83.                 'label' => false
  84.             ])->add('machineCostMatrices'CollectionType::class,[
  85.                 'entry_type' => MachineCostMatrixType::class,
  86.                 'entry_options' => [
  87.                     'label' => false
  88.                 ],
  89.                 'allow_add' => true,
  90.                 'allow_delete' => true,
  91.                 'by_reference' => false,
  92.                 'prototype' => true,
  93.                 'label' => false
  94.             ]);
  95.     }
  96.     public function configureOptions(OptionsResolver $resolver): void
  97.     {
  98.         $resolver->setDefaults([
  99.             'data_class' => Machine::class,
  100.         ]);
  101.     }
  102. }