Loading src/Controller/HomeController.php +4 −5 Original line number Diff line number Diff line Loading @@ -18,13 +18,12 @@ class HomeController extends AbstractController $this->functions = $functions; } #[Route('/', name: 'home', methods: ['POST'])] public function home(Request $request): Response #[Route('/func1', name: 'home', methods: ['POST'])] public function func1(Request $request): Response { $array = $request->get('arr'); $errors = ArrayValidation::validate($array); if (count($errors) > 0) { return new Response((string)$errors); if (!ArrayValidation::validateFunc1($array)) { return new Response("Invalid array"); } $array = $this->functions->sortPrice($array); return $this->json($array); Loading src/Validation/ArrayValidation.php +4 −18 Original line number Diff line number Diff line Loading @@ -2,26 +2,12 @@ namespace App\Validation; use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\ConstraintViolationListInterface; class ArrayValidation { public static function validate(array $array): ConstraintViolationListInterface public static function validateFunc1(array $array): bool { $validator = Validation::createValidator(); $constraints = new Assert\Optional([ new Assert\Collection([ new Assert\Optional([ new Assert\Type('array'), new Assert\Collection([ 'price' => new Assert\Type('int'), 'count' => new Assert\Type('int') ]) ]) ]) ]); return $validator->validate($array, $constraints); $prices = array_column($array, 'price'); $counts = array_column($array, 'count'); return ctype_digit(implode('',$prices)) && ctype_digit(implode('', $counts)); } } No newline at end of file Loading
src/Controller/HomeController.php +4 −5 Original line number Diff line number Diff line Loading @@ -18,13 +18,12 @@ class HomeController extends AbstractController $this->functions = $functions; } #[Route('/', name: 'home', methods: ['POST'])] public function home(Request $request): Response #[Route('/func1', name: 'home', methods: ['POST'])] public function func1(Request $request): Response { $array = $request->get('arr'); $errors = ArrayValidation::validate($array); if (count($errors) > 0) { return new Response((string)$errors); if (!ArrayValidation::validateFunc1($array)) { return new Response("Invalid array"); } $array = $this->functions->sortPrice($array); return $this->json($array); Loading
src/Validation/ArrayValidation.php +4 −18 Original line number Diff line number Diff line Loading @@ -2,26 +2,12 @@ namespace App\Validation; use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\ConstraintViolationListInterface; class ArrayValidation { public static function validate(array $array): ConstraintViolationListInterface public static function validateFunc1(array $array): bool { $validator = Validation::createValidator(); $constraints = new Assert\Optional([ new Assert\Collection([ new Assert\Optional([ new Assert\Type('array'), new Assert\Collection([ 'price' => new Assert\Type('int'), 'count' => new Assert\Type('int') ]) ]) ]) ]); return $validator->validate($array, $constraints); $prices = array_column($array, 'price'); $counts = array_column($array, 'count'); return ctype_digit(implode('',$prices)) && ctype_digit(implode('', $counts)); } } No newline at end of file