src/Form/SetShipmentType.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Form;
  4. use App\Component\Order\Model\Order;
  5. use App\Component\Shipment\Model\Shipment;
  6. use App\Component\Shipment\Model\ShipmentInterface;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  10. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  14. use Symfony\Component\Translation\TranslatorInterface;
  15. class SetShipmentType extends AbstractType
  16. {
  17.     /**
  18.      * @var UrlGeneratorInterface
  19.      */
  20.     private $urlGenerator;
  21.     /**
  22.      * @var TranslatorInterface
  23.      */
  24.     private $translator;
  25.     public function __construct(UrlGeneratorInterface $urlGeneratorTranslatorInterface $translator)
  26.     {
  27.         $this->urlGenerator $urlGenerator;
  28.         $this->translator $translator;
  29.     }
  30.     /**
  31.      * {@inheritdoc}
  32.      */
  33.     public function buildForm(FormBuilderInterface $builder, array $options)
  34.     {
  35.         $builder->setAction($this->urlGenerator->generate('cart.setShipment'));
  36.         $builder->add(
  37.             'id',
  38.             HiddenType::class
  39.         );
  40.         $builder->add(
  41.             'shipment',
  42.             EntityType::class,
  43.             [
  44.                 'class' => Shipment::class,
  45.                 'choice_label' => function (ShipmentInterface $shipment) {
  46.                     return "{$shipment->getName()} ({$shipment->getPrice()} {$this->translator->trans('app.default.currencyDescription')})";
  47.                 },
  48.                 'placeholder' => 'app.cart.setShipment.select',
  49.                 'empty_data' => null,
  50.                 'attr' => [
  51.                     'class'=>'form-control-5'
  52.                 ]
  53.             ]
  54.         );
  55.         $builder->add(
  56.             'submit',
  57.             SubmitType::class,
  58.             [
  59.                 'label' => 'app.cart.setShipment.button'
  60.             ]
  61.         );
  62.     }
  63.     public function configureOptions(OptionsResolver $resolver)
  64.     {
  65.         $resolver->setDefaults(array(
  66.             'data_class' => Order::class,
  67.         ));
  68.     }
  69. }