vendor/sylius/sylius/src/Sylius/Bundle/CoreBundle/Form/Extension/CartTypeExtension.php line 42

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Sylius package.
  4.  *
  5.  * (c) Paweł Jędrzejewski
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace Sylius\Bundle\CoreBundle\Form\Extension;
  12. use Sylius\Bundle\AddressingBundle\Form\Type\AddressType;
  13. use Sylius\Bundle\OrderBundle\Form\Type\CartType;
  14. use Sylius\Bundle\PromotionBundle\Form\Type\PromotionCouponToCodeType;
  15. use Symfony\Component\Form\AbstractTypeExtension;
  16. use Symfony\Component\Form\FormBuilderInterface;
  17. use Symfony\Component\Form\FormInterface;
  18. use Symfony\Component\OptionsResolver\Options;
  19. use Symfony\Component\OptionsResolver\OptionsResolver;
  20. final class CartTypeExtension extends AbstractTypeExtension
  21. {
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $builder
  25.             ->add('shippingAddress'AddressType::class)
  26.             ->add('billingAddress'AddressType::class)
  27.             ->add('promotionCoupon'PromotionCouponToCodeType::class, [
  28.                 'by_reference' => false,
  29.                 'label' => 'sylius.form.cart.coupon',
  30.                 'required' => false,
  31.             ])
  32.         ;
  33.     }
  34.     public function configureOptions(OptionsResolver $resolver): void
  35.     {
  36.         $resolver->setNormalizer('validation_groups', fn (Options $options, array $validationGroups) => function (FormInterface $form) use ($validationGroups) {
  37.             if ((bool) $form->get('promotionCoupon')->getNormData()) { // Validate the coupon if it was sent
  38.                 $validationGroups[] = 'sylius_promotion_coupon';
  39.             }
  40.             return $validationGroups;
  41.         });
  42.     }
  43.     public function getExtendedType(): string
  44.     {
  45.         return CartType::class;
  46.     }
  47.     public static function getExtendedTypes(): iterable
  48.     {
  49.         return [CartType::class];
  50.     }
  51. }