![]() 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-catalog/Ui/DataProvider/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Ui\DataProvider; use Magento\Catalog\Api\Data\ProductAttributeInterface; /** * Class build validation rules for catalog EAV attributes * * @api * @since 101.0.0 */ class CatalogEavValidationRules { /** * Build validation rules * * @param ProductAttributeInterface $attribute * @param array $data * @return array * @since 101.0.0 */ public function build(ProductAttributeInterface $attribute, array $data) { $rules = []; if (!empty($data['required'])) { $rules['required-entry'] = true; } if ($attribute->getFrontendInput() === 'price') { $rules['validate-zero-or-greater'] = true; } $validationClasses = $attribute->getFrontendClass() ? explode(' ', $attribute->getFrontendClass()) : []; foreach ($validationClasses as $class) { if (preg_match('/^maximum-length-(\d+)$/', $class, $matches)) { // phpcs:ignore Magento2.Performance.ForeachArrayMerge $rules = array_merge($rules, ['max_text_length' => $matches[1]]); continue; } if (preg_match('/^minimum-length-(\d+)$/', $class, $matches)) { // phpcs:ignore Magento2.Performance.ForeachArrayMerge $rules = array_merge($rules, ['min_text_length' => $matches[1]]); continue; } $rules = $this->mapRules($class, $rules); } return $rules; } /** * Map classes w. rules * * @param string $class * @param array $rules * @return array * @since 101.0.0 */ protected function mapRules($class, array $rules) { switch ($class) { case 'validate-number': case 'validate-digits': case 'validate-email': case 'validate-url': case 'validate-trailing-hyphen': case 'validate-alpha': case 'validate-alphanum': $rules = array_merge($rules, [$class => true]); break; } return $rules; } }