src/Form/SetPaymentType.php line 54

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\Payment\Model\Payment;
  6. use App\Component\Payment\Model\PaymentInterface;
  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 SetPaymentType 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.setPayment'));
  36.         $builder->add(
  37.             'id',
  38.             HiddenType::class
  39.         );
  40.         $builder->add(
  41.             'payment',
  42.             EntityType::class,
  43.             [
  44.                 'class' => Payment::class,
  45.                 'choice_label' => function (PaymentInterface $payment) {
  46.                     return "{$payment->getName()} ({$payment->getPrice()} {$this->translator->trans('app.default.currencyDescription')})";
  47.                 },
  48.                 'placeholder' => 'app.cart.setPayment.select',
  49.                 'empty_data' => null
  50.             ]
  51.         );
  52.         $builder->add(
  53.             'submit',
  54.             SubmitType::class,
  55.             [
  56.                 'label' => 'app.cart.setPayment.button'
  57.             ]
  58.         );
  59.     }
  60.     public function configureOptions(OptionsResolver $resolver)
  61.     {
  62.         $resolver->setDefaults(array(
  63.             'data_class' => Order::class,
  64.         ));
  65.     }
  66. }