app/Plugin/SalesReport42/Form/Type/SalesReportType.php line 29

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\SalesReport42\Form\Type;
  13. use Symfony\Component\Form\AbstractType;
  14. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  15. use Symfony\Component\Form\Extension\Core\Type\DateType;
  16. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  17. use Symfony\Component\Form\FormBuilderInterface;
  18. use Symfony\Component\Form\FormError;
  19. use Symfony\Component\Form\FormEvents;
  20. use Symfony\Component\Form\FormEvent;
  21. use Symfony\Component\Validator\Constraints as Assert;
  22. /**
  23.  * Class SalesReportType.
  24.  */
  25. class SalesReportType extends AbstractType
  26. {
  27.     /**
  28.      * BuildForm Sale Report.
  29.      *
  30.      * @param FormBuilderInterface $builder
  31.      * @param array $options
  32.      */
  33.     public function buildForm(FormBuilderInterface $builder, array $options)
  34.     {
  35.         // 年月の配列定義. 今年±20年
  36.         $yearList range(date('Y'), date('Y') - 20);
  37.         // 1~12月
  38.         $monthList range(112);
  39.         $builder
  40.             ->add('term_type'HiddenType::class, [
  41.                 'required' => false,
  42.             ])
  43.             ->add('monthly_year'ChoiceType::class, [
  44.                 'label' => 'sales_report.admin.label.monthly_year',
  45.                 'required' => true,
  46.                 'choices' => array_combine($yearList$yearList),
  47.                 'data' => date('Y'),
  48.             ])
  49.             ->add('monthly_month'ChoiceType::class, [
  50.                 'label' => 'sales_report.admin.label.monthly_month',
  51.                 'required' => true,
  52.                 'choices' => array_combine($monthList$monthList),
  53.                 'data' => date('n'),
  54.             ])
  55.             ->add('term_start'DateType::class, [
  56.                 'label' => 'sales_report.admin.label.term_start',
  57.                 'required' => true,
  58.                 'input' => 'datetime',
  59.                 'widget' => 'single_text',
  60.                 'format' => 'yyyy-MM-dd',
  61.                 'data' => new \DateTime('first day of this month'),
  62.                 'attr' => [
  63.                     'class' => 'datetimepicker-input',
  64.                     'data-target' => '#'.$this->getBlockPrefix().'_term_start',
  65.                     'data-toggle' => 'datetimepicker',
  66.                 ],
  67.             ])
  68.             ->add('term_end'DateType::class, [
  69.                 'label' => 'sales_report.admin.label.term_end',
  70.                 'required' => true,
  71.                 'input' => 'datetime',
  72.                 'widget' => 'single_text',
  73.                 'format' => 'yyyy-MM-dd',
  74.                 'data' => new \DateTime(),
  75.                 'attr' => [
  76.                     'class' => 'datetimepicker-input',
  77.                     'data-target' => '#'.$this->getBlockPrefix().'_term_end',
  78.                     'data-toggle' => 'datetimepicker',
  79.                 ],
  80.             ])
  81.             ->add('unit'ChoiceType::class, [
  82.                 'label' => 'sales_report.admin.label.unit',
  83.                 'required' => true,
  84.                 'expanded' => true,
  85.                 'multiple' => false,
  86.                 'choices' => array_flip([
  87.                     'byDay' => 'sales_report.admin.label.byDay',
  88.                     'byMonth' => 'sales_report.admin.label.byMonth',
  89.                     'byWeekDay' => 'sales_report.admin.label.byWeekDay',
  90.                     'byHour' => 'sales_report.admin.label.byHour',
  91.                 ]),
  92.                 'data' => 'byDay',
  93.                 'constraints' => [
  94.                     new Assert\NotBlank(),
  95.                 ],
  96.             ])
  97.             ->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
  98.                 $form $event->getForm();
  99.                 $data $form->getData();
  100.                 if ($data['term_type'] === 'monthly') {
  101.                     if (empty($data['monthly_year'])) {
  102.                         $form['monthly_year']->addError(
  103.                             new FormError(trans('sales_report.admin.type.monthly.error'))
  104.                         );
  105.                     }
  106.                     if (empty($data['monthly_month'])) {
  107.                         $form['monthly_month']->addError(
  108.                             new FormError(trans('sales_report.admin.type.monthly.error'))
  109.                         );
  110.                     }
  111.                 } elseif ($data['term_type'] === 'term' && (empty($data['term_start']) || empty($data['term_end']))) {
  112.                     $form['term_start']->addError(new FormError(trans('sales_report.admin.type.term_start.error')));
  113.                 }
  114.             })
  115.         ;
  116.     }
  117.     /**
  118.      * get sale report form name.
  119.      *
  120.      * @return string
  121.      */
  122.     public function getName()
  123.     {
  124.         return 'sales_report';
  125.     }
  126. }