[ 'type' => 'int', 'backend' => '', 'frontend' => '', 'label' => 'XXXX', 'input' => 'text', 'frontend_class' => 'validate-greater-than-zero', 'source' => '', 'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL, 'visible' => true, 'required' => true, 'user_defined' => false, 'default' => 0, 'searchable' => false, 'filterable' => true, 'comparable' => false, 'visible_on_front' => false, 'used_in_product_listing' => true, 'unique' => false ]
I am adding custom product attribute which works fine, but not able to add validate-greater-than-zero
validation.
If we look at any attribute properties in Input Validation for Store Owner
there are limited number of validations in select options.
validate-number
,validate-digits
,validate-email
,validate-url
,validate-alpha
,validate-alphanum
These are the only validations applied in Product attribute section.
Best Answer
One of the solution is to add a
backend model
to your attribute which is used to format / validate your attribute value before save and/or after load.Add a backend class :
Here is an example of your custom class
\Foo\Bar\Model\Attribute\Backend\YourAttribute
If you want a simple example of that kind of class you can check
\Magento\Customer\Model\Customer\Attribute\Backend\Website
\Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
backend_model
column ineav_attribute
tableEDIT
If you want a class that do nearly the same thing as you want you can take a look at the
SKU
attribute validation\Magento\Catalog\Model\Product\Attribute\Backend\Sku
I also added the method in the example class
EDIT
Another solution (maybe not the best one) is to create a plugin on the function
\Magento\Eav\Helper\Data::getFrontendClasses
and add your frontend class here that can be validated in front.