इसकी मदद से Matthéo Geoffray
, मैंने कस्टम विशेषताओं के लिए फ्रंटेंड सत्यापन लागू करने के लिए किया।
[
'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
]
यह स्क्रिप्ट स्थापित करने में कस्टम विशेषता है।
मैंने di.xml में प्लगइन जोड़ा
<type name="Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules">
<plugin name="namespace_custom_validation_for_product_attribute" type="Namespace\Module\Model\Plugin\Product\ValidationRules"/>
</type>
यहाँ प्लगइन कोड है।
<?php
namespace Namespace\Module\Model\Plugin\Product;
use Closure;
class ValidationRules
{
/**
* @param \Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules $rulesObject
* @param callable $proceed
* @param \Magento\Catalog\Api\Data\ProductAttributeInterface $attribute,
* @param array $data
* @return array
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function aroundBuild(
\Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules $rulesObject,
Closure $proceed,
\Magento\Catalog\Api\Data\ProductAttributeInterface $attribute,
array $data
){
$rules = $proceed($attribute,$data);
if($attribute->getAttributeCode() == 'xyz'){ //custom filter
$validationClasses = explode(' ', $attribute->getFrontendClass());
foreach ($validationClasses as $class) {
$rules[$class] = true;
}
}
return $rules;
}
}
मूल रूप से \Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules
, विधि कहा जाता है mapRules
कि सीमित संख्या में सत्यापन नियमों के खिलाफ केवल फ्रंटेंड क्लास से मेल खाता है। अधिक सत्यापन नियमों को लागू करने के लिए हमें प्लगइन का उपयोग करके नियमों को जोड़ना होगा।
सर्वर साइड सत्यापन के लिए, कृपया Matthéo Geoffray
उत्तर देने के लिए देखें ।