From 36cbdeb261aa1e4ec607c47cb9b2155b6393d777 Mon Sep 17 00:00:00 2001 From: kiy0taka Date: Fri, 22 Jul 2022 11:56:30 +0900 Subject: [PATCH] =?UTF-8?q?=E5=8F=97=E6=B3=A8=E7=99=BB=E9=8C=B2=E6=99=82?= =?UTF-8?q?=E3=81=AB=E9=9B=BB=E8=A9=B1=E7=95=AA=E5=8F=B7=E3=81=AE=E3=83=90?= =?UTF-8?q?=E3=83=AA=E3=83=87=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92?= =?UTF-8?q?=E5=8A=B9=E3=81=8F=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Form/Type/PhoneNumberType.php | 12 ++++-------- tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php | 7 +++++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Eccube/Form/Type/PhoneNumberType.php b/src/Eccube/Form/Type/PhoneNumberType.php index 3dc1f1f99db..caee56c7543 100644 --- a/src/Eccube/Form/Type/PhoneNumberType.php +++ b/src/Eccube/Form/Type/PhoneNumberType.php @@ -17,7 +17,6 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints as Assert; @@ -56,8 +55,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) */ public function configureOptions(OptionsResolver $resolver) { - $eccubeConfig = $this->eccubeConfig; - $constraints = function (Options $options) use ($eccubeConfig) { + $resolver->setNormalizer('constraints', function($options, $value) { $constraints = []; // requiredがtrueに指定されている場合, NotBlankを追加 if (isset($options['required']) && true === $options['required']) { @@ -65,7 +63,7 @@ public function configureOptions(OptionsResolver $resolver) } $constraints[] = new Assert\Length([ - 'max' => $eccubeConfig['eccube_tel_len_max'], + 'max' => $this->eccubeConfig['eccube_tel_len_max'], ]); $constraints[] = new Assert\Type([ @@ -73,12 +71,10 @@ public function configureOptions(OptionsResolver $resolver) 'message' => 'form_error.numeric_only', ]); - return $constraints; - }; + return array_merge($constraints, $value); + }); $resolver->setDefaults([ - 'options' => ['constraints' => []], - 'constraints' => $constraints, 'attr' => [ 'placeholder' => 'common.phone_number_sample', ], diff --git a/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php b/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php index f7479037470..ed094d5a2a5 100644 --- a/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php +++ b/tests/Eccube/Tests/Form/Type/Admin/OrderTypeTest.php @@ -162,4 +162,11 @@ public function testInValidChargeHasMinus() $this->form->submit($this->formData); $this->assertFalse($this->form->isValid()); } + + public function testInvalidPhoneNumberTooLong() { + $this->formData['phone_number'] = '0123456789012345'; + + $this->form->submit($this->formData); + $this->assertFalse($this->form['phone_number']->isValid()); + } }