app/Customize/Form/Extension/Front/EntryTypeExtension.php line 22

Open in your IDE?
  1. <?php
  2. namespace Customize\Form\Extension\Front;
  3. use Eccube\Form\Type\Front\EntryType;
  4. use Eccube\Entity\Customer;
  5. use Eccube\Form\Type\Master\JobType;
  6. use Symfony\Component\Form\AbstractTypeExtension;
  7. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\Validator\Constraints\NotBlank;
  11. use Symfony\Component\Form\FormEvent;
  12. use Symfony\Component\Form\FormEvents;
  13. use Symfony\Component\Form\FormError;
  14. class EntryTypeExtension extends AbstractTypeExtension
  15. {
  16.     /**
  17.      * {@inheritdoc}
  18.      */
  19.     public function buildForm(FormBuilderInterface $builder, array $options)
  20.     {
  21.         $options $builder->get('company_name')->getOptions();
  22.         $options['required'] = true;
  23.         $options['constraints'] = [ new NotBlank() ];
  24.         $options['attr']['placeholder'] = '会社名';
  25.         $builder->add('company_name'TextType::class, $options);
  26.         $options $builder->get('job')->getOptions();
  27.         $options['required'] = true;
  28.         $options['constraints'] = [ new NotBlank() ];
  29.         $builder->add('job'JobType::class, $options);
  30.         $builder->add('job_other'TextType::class, [
  31.           'required' => false,
  32.         ]);
  33.         $builder
  34.             ->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event){
  35.                 $form $event->getForm()->get('job_other');
  36.                 /** @var Customer $data */
  37.                 $data $event->getData();
  38.                 $job $data->getJob();
  39.                 if( $job !== null ){
  40.                   if( $job->getId() === 6){
  41.                       if( $form->getData() === null ){
  42.                           $form->addError(new FormError('業種がその他場合は、必須となります。'));
  43.                       }
  44.                   }
  45.               }
  46.             });
  47.         $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
  48.           $Customer $event->getData();
  49.           if ($Customer instanceof Customer && !$Customer->getId()) {
  50.               $form $event->getForm();
  51.               $form->add('user_payment_check'CheckboxType::class, [
  52.                       'required' => true,
  53.                       'label' => null,
  54.                       'mapped' => false,
  55.                       'constraints' => [
  56.                           new NotBlank(),
  57.                       ],
  58.                   ]);
  59.           }
  60.         });
  61.     }
  62.     /**
  63.      * {@inheritdoc}
  64.      */
  65.     public function getExtendedType()
  66.     {
  67.         return EntryType::class;
  68.     }
  69.     
  70.     /**
  71.      * {@inheritdoc}
  72.      */
  73.     public static function getExtendedTypes(): iterable
  74.     {
  75.         yield EntryType::class;
  76.     }
  77. }