![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-ui/DataProvider/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Ui\DataProvider; use Magento\Eav\Model\Entity\Attribute\AbstractAttribute; /** * @api * @since 100.0.2 */ class EavValidationRules { /** * @var array * @since 100.0.6 */ protected $validationRules = [ 'email' => ['validate-email' => true], 'date' => ['validate-date' => true], ]; /** * Build validation rules * * @param AbstractAttribute $attribute * @param array $data * @return array */ public function build(AbstractAttribute $attribute, array $data) { $validations = []; if (isset($data['required']) && $data['required'] == 1) { $validations = array_merge($validations, ['required-entry' => true]); } if ($attribute->getFrontendInput() === 'price') { $validations = array_merge($validations, ['validate-zero-or-greater' => true]); } if ($attribute->getValidateRules()) { $validations = array_merge($validations, $this->clipLengthRules($attribute->getValidateRules())); } return $this->aggregateRules($validations); } /** * @param array $validations * @return array */ private function aggregateRules(array $validations): array { $rules = []; foreach ($validations as $type => $ruleValue) { $rule = [$type => $ruleValue]; if ($type === 'input_validation') { $rule = $this->validationRules[$ruleValue] ?? []; } if (count($rule) !== 0) { $key = key($rule); $rules[$key] = $rule[$key]; } } return $rules; } /** * @param array $rules * @return array */ private function clipLengthRules(array $rules): array { if (empty($rules['input_validation'])) { unset( $rules['min_text_length'], $rules['max_text_length'] ); } return $rules; } }