app/Customize/Form/Type/AdvanceType.php line 32

Open in your IDE?
  1. <?php
  2. namespace Customize\Form\Type;
  3. use Customize\Entity\Advances;
  4. use Doctrine\ORM\Mapping\Entity;
  5. use Eccube\Common\EccubeConfig;
  6. use Eccube\Form\Type\Master\PrefType;
  7. use Eccube\Form\Type\PostalType;
  8. use Eccube\Form\Type\ToggleSwitchType;
  9. use Plugin\CourcesManagerPlugin\Entity\TjoCourse;
  10. use Plugin\CourcesManagerPlugin\Repository\Admin\TjoCourseRepository;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Component\Form\AbstractType;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextType;
  16. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  17. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  18. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  19. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  20. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  21. use Symfony\Component\Form\FormBuilderInterface;
  22. use Symfony\Component\OptionsResolver\OptionsResolver;
  23. use Symfony\Component\Validator\Constraints\Choice;
  24. use Symfony\Component\Validator\Constraints\LessThanOrEqual;
  25. use Symfony\Component\Validator\Constraints\NotBlank;
  26. use Symfony\Component\Validator\Constraints\Email;
  27. use Symfony\Component\Validator\Constraints\Length;
  28. use Symfony\Component\Validator\Constraints\IsTrue;
  29. class AdvanceType extends AbstractType
  30. {
  31.     private $eccubeConfig;
  32.     private $courseRepository;
  33.     public function __construct(EccubeConfig $eccubeConfigTjoCourseRepository $courseRepository)
  34.     {
  35.         $this->eccubeConfig $eccubeConfig;
  36.         $this->courseRepository $courseRepository;
  37.     }
  38.     public function buildForm(FormBuilderInterface $builder, array $options)
  39.     {
  40.         $courses $this->courseRepository->getCourses();
  41.         $allCourses $this->courseRepository->getAllCourses();
  42.         if (!$options['is_logged_in']) {
  43.             $builder
  44.                 ->add('name01'TextType::class, [
  45.                     'required' => true,
  46.                     'mapped'    => false,
  47.                     'constraints' => [
  48.                         new NotBlank(),
  49.                         new Length(['max' => 255]),
  50.                     ],
  51.                 ])
  52.                 ->add('name02'TextType::class, [
  53.                     'required' => true,
  54.                     'mapped'    => false,
  55.                     'constraints' => [
  56.                         new NotBlank(),
  57.                         new Length(['max' => 255]),
  58.                     ],
  59.                 ])
  60.                 ->add('kana01'TextType::class, [
  61.                     'required' => true,
  62.                     'mapped'    => false,
  63.                     'constraints' => [
  64.                         new NotBlank(),
  65.                         new Length(['max' => 255]),
  66.                     ],
  67.                 ])
  68.                 ->add('kana02'TextType::class, [
  69.                     'required' => true,
  70.                     'mapped'    => false,
  71.                     'constraints' => [
  72.                         new NotBlank(),
  73.                         new Length(['max' => 255]),
  74.                     ],
  75.                 ])
  76.                 ->add('club_name'TextType::class, [
  77.                     'required' => false,
  78.                     'mapped'    => false,
  79.                     'constraints' => [
  80.                         new Length(['max' => 255]),
  81.                     ],
  82.                 ])
  83.                 ->add('postal_code'PostalType::class, [
  84.                     'required' => true,
  85.                     'mapped'    => false,
  86.                     'constraints' => [
  87.                         new NotBlank(),
  88.                         new Length(['max' => 8]),
  89.                     ],
  90.                 ])
  91.                 ->add('pref'PrefType::class, [
  92.                     'required' => true,
  93.                     'mapped'    => false,
  94.                 ])
  95.                 ->add('addr01'TextType::class, [
  96.                     'required' => true,
  97.                     'mapped'    => false,
  98.                     'constraints' => [
  99.                         new NotBlank(),
  100.                         new Length(['max' => 255]),
  101.                     ],
  102.                 ])
  103.                 ->add('addr02'TextType::class, [
  104.                     'required' => true,
  105.                     'mapped'    => false,
  106.                     'constraints' => [
  107.                         new NotBlank(),
  108.                         new Length(['max' => 255]),
  109.                     ],
  110.                 ])
  111.                 ->add('phone_number'TextType::class, [
  112.                     'required' => true,
  113.                     'mapped'    => false,
  114.                     'constraints' => [
  115.                         new NotBlank(),
  116.                         new Length(['max' => 14]),
  117.                     ],
  118.                 ])
  119.                 ->add('email'EmailType::class, [
  120.                     'required' => true,
  121.                     'mapped'    => false,
  122.                     'constraints' => [
  123.                         new NotBlank(),
  124.                         new Email(),
  125.                     ],
  126.                 ])
  127.                 ->add('plain_password'RepeatedType::class, [
  128.                     'type' => PasswordType::class,
  129.                     'mapped'    => false,
  130.                     'invalid_message' => 'パスワードが一致しません。',
  131.                     'required' => true,
  132.                     'first_options'  => ['label' => 'パスワード'],
  133.                     'second_options' => ['label' => 'パスワード(確認)'],
  134.                     'constraints' => [
  135.                         new NotBlank(),
  136.                         new Length(['min' => 8'max' => 50]),
  137.                     ],
  138.                 ]);
  139.         }
  140.         $builder
  141.             ->add('Courses1'EntityType::class, [
  142.                 'required' => true,
  143.                 'label' => 'コース名2',
  144.                 'class' => TjoCourse::class,
  145.                 'choice_label' => 'name',
  146.                 'choices' => $allCourses,
  147.                 'placeholder' => '指定コースを選択',
  148.             ])
  149.             ->add('Courses2'EntityType::class, [
  150.                 'required' => false,
  151.                 'label' => 'コース名2',
  152.                 'class' => TjoCourse::class,
  153.                 'choice_label' => 'name',
  154.                 'choices' => $courses,
  155.                 'placeholder' => '指定コースを選択',
  156.             ])
  157.             ->add('Courses3'EntityType::class, [
  158.                 'required' => false,
  159.                 'label' => 'コース名3',
  160.                 'class' => TjoCourse::class,
  161.                 'choice_label' => 'name',
  162.                 'choices' => $courses,
  163.                 'placeholder' => '指定コースを選択',
  164.             ])
  165.             ->add('course1_use',ChoiceType::class,[
  166.                 'choices'           => array_flip(Advances::COURSE_USE),
  167.                 'required'          => true,
  168.                 'expanded'          => false,
  169.                 'multiple'          => false,
  170.                 'placeholder'       => '使用目的を選択',
  171.                 'attr'              => [
  172.                     'class'     => 'course_use',
  173.                 ],
  174.             ])
  175.             ->add('course2_use',ChoiceType::class,[
  176.                 'choices'           => array_flip(Advances::COURSE_USE),
  177.                 'required'          => false,
  178.                 'expanded'          => false,
  179.                 'multiple'          => false,
  180.                 'placeholder'       => '使用目的を選択',
  181.                 'attr'              => [
  182.                     'class'     => 'course_use',
  183.                 ],
  184.             ])
  185.             ->add('course3_use',ChoiceType::class,[
  186.                 'choices'           => array_flip(Advances::COURSE_USE),
  187.                 'required'          => false,
  188.                 'expanded'          => false,
  189.                 'multiple'          => false,
  190.                 'placeholder'       => '使用目的を選択',
  191.                 'attr'              => [
  192.                     'class'     => 'course_use',
  193.                 ],
  194.             ])
  195.             ->add('hope_1'DateType::class, [
  196.                 'required' => true,
  197.                 'label' => '第一希望日',
  198.                 'input' => 'datetime',
  199.                 'years' => range(date('Y'), date('Y') + 1),
  200.                 'widget' => 'single_text',
  201.                 'constraints' => [
  202.                     new NotBlank(),
  203.                     new LessThanOrEqual([
  204.                         'value' => date('Y-12-31'strtotime('next year')),
  205.                         'message' => '翌年の年末までの日付を選択してください。',
  206.                     ]),
  207.                 ],
  208.                 'attr' => [
  209.                     'min' => date('Y-m-d'strtotime("+2 weeks")),
  210.                     'max' => date('Y-12-31'strtotime('next year')),
  211.                 ],
  212.             ])
  213.             ->add('hope_2'DateType::class, [
  214.                 'required' => false,
  215.                 'label' => '第二希望日',
  216.                 'input' => 'datetime',
  217.                 'years' => range(date('Y'), date('Y') + 1),
  218.                 'widget' => 'single_text',
  219.                 'constraints' => [
  220.                     new LessThanOrEqual([
  221.                         'value' => date('Y-12-31'strtotime('next year')),
  222.                         'message' => '翌年の年末までの日付を選択してください。',
  223.                     ]),
  224.                 ],
  225.                 'attr' => [
  226.                     'min' => date('Y-m-d'strtotime("+2 weeks")),
  227.                     'max' => date('Y-12-31'strtotime('next year')),
  228.                 ],
  229.             ])
  230.             ->add('hope_3'DateType::class, [
  231.                 'required' => false,
  232.                 'label' => '第三希望日',
  233.                 'input' => 'datetime',
  234.                 'years' => range(date('Y'), date('Y') + 1),
  235.                 'widget' => 'single_text',
  236.                 'constraints' => [
  237.                     new LessThanOrEqual([
  238.                         'value' => date('Y-12-31'strtotime('next year')),
  239.                         'message' => '翌年の年末までの日付を選択してください。',
  240.                     ]),
  241.                 ],
  242.                 'attr' => [
  243.                     'min' => date('Y-m-d'strtotime("+2 weeks")),
  244.                     'max' => date('Y-12-31'strtotime('next year')),
  245.                 ],
  246.             ])
  247.             ->add('note'TextareaType::class, [
  248.                 'required' => false,
  249.                 'label' => '備考',
  250.                 'constraints' => [
  251.                     new Length([
  252.                         'max' => $this->eccubeConfig['eccube_ltext_len'],
  253.                     ]),
  254.                 ],
  255.                 'attr' => [
  256.                     'placeholder' => '備考を入力してください',
  257.                     'maxlength' => $this->eccubeConfig['eccube_ltext_len'],
  258.                 ],
  259.             ])
  260.             ->add('is_agreed'CheckboxType::class, [
  261.                 'required' => true,
  262.                 'constraints' => [
  263.                     new IsTrue([
  264.                         'message' => '利用規約に同意してください。',
  265.                     ]),
  266.                 ],
  267.             ]);
  268.     }
  269.     public function configureOptions(OptionsResolver $resolver)
  270.     {
  271.         $resolver->setDefaults([
  272.             'data_class' => Advances::class,
  273.             'is_logged_in' => false,
  274.         ]);
  275.         $resolver->setAllowedTypes('is_logged_in''bool');
  276.     }
  277. }