[ 'type' => 'int', 'backend' => '', 'frontend' => '', 'label' => 'XXXX', 'input' => 'text', 'frontend_class' => 'validate-больше-чем-ноль', 'source' => '', 'global' => \ Magento \ Eav \ Model \ Entity \ Attribute \ ScopedAttributeInterface :: SCOPE_GLOBAL, 'visible' => true, 'required' => true, 'user_defined' => false, 'default' => 0, 'searchable' => false, 'фильтруемый' => правда, «сопоставимый» => ложный, 'visible_on_front' => false, 'used_in_product_listing' => true, 'unique' => false ]
Я добавляю пользовательский атрибут продукта, который работает нормально, но не может добавить validate-greater-than-zero
проверку.
Если мы посмотрим на какие-либо свойства атрибута Input Validation for Store Owner
, количество вариантов проверки ограничено.
validate-number
, validate-digits
, validate-email
, validate-url
, validate-alpha
,validate-alphanum
Это единственные проверки, примененные в разделе атрибутов продукта.
magento2
javascript
jquery
form-validation
knockoutjs
Амит Сингх
источник
источник
Ответы:
Одним из решений является добавление
backend model
к вашему атрибуту атрибута, который используется для форматирования / проверки значения вашего атрибута перед сохранением и / или после загрузки.Добавьте бэкэнд-класс:
Вот пример вашего пользовательского класса
\Foo\Bar\Model\Attribute\Backend\YourAttribute
Если вы хотите простой пример такого класса, вы можете проверить
\Magento\Customer\Model\Customer\Attribute\Backend\Website
\Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
backend_model
столбец вeav_attribute
таблицеРЕДАКТИРОВАТЬ
Если вы хотите, чтобы класс, который делает почти то же самое, что и вы, вы можете взглянуть на
SKU
проверку атрибута,\Magento\Catalog\Model\Product\Attribute\Backend\Sku
я также добавил метод в примере класса
РЕДАКТИРОВАТЬ
Другое решение (возможно, не лучшее) состоит в том, чтобы создать плагин для функции
\Magento\Eav\Helper\Data::getFrontendClasses
и добавить свой класс веб-интерфейса, который может быть проверен вначале.источник
eav_attribute
таблице в столбце,frontend_class
будет ли это значениеvalidate-greater-than-zero
?validate-number
,validate-digits
,validate-email
,validate-url
,validate-alpha
,validate-alphanum
.С помощью
Matthéo Geoffray
этого я и применил проверку внешнего интерфейса для пользовательских атрибутов.Это пользовательский атрибут в скрипте установки.
Я добавил плагин в di.xml
Вот код плагина.
По сути
\Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules
, вызываемый методmapRules
сопоставляет только класс внешнего интерфейса с ограниченным числом правил проверки. Чтобы применить больше правил проверки, нам нужно добавить правила с помощью плагина.Для проверки на стороне сервера, пожалуйста, обратитесь к
Matthéo Geoffray
ответу.источник
Я не уверен, что это возможно из установочного скрипта. Но я уверен, что это возможно, если вы создадите плагин «перед прослушиванием» с функцией
beforeSave()
и проверите там значение.источник