<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发
》</a></h5>
<div class="image-container">
<p>
<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">
<img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发">
</a>
</p>
</div>
<div class="text-container" style="font-size:14px; color:#888">
<p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p>
</div>
<hr><p>在Magento 2中以编程方式应用自定义产品属性验证的步骤:</p><p>第 1 步:InstallData.php在给定的以下路径</p><p>app\code\Vendor\Extension\Setup\InstallData.php</p><p>添加以下代码</p><pre class="brush:bash;toolbar:false"><?php
namespace Vendor\Extension\Setup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Catalog\Model\Product;
use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
class InstallData implements InstallDataInterface
{
private $eavSetupFactory;
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$eavSetup->addAttribute(
Product::ENTITY,
'attribute_code',
[
'type' => 'text',
'backend' => '',
'frontend' => '',
'group' => 'General',
'label' => 'Attribute Label',
'input' => 'text',
'frontend_class' => 'validate-greater-than-zero validate-digits',
'class' => '',
'source' => '',
'sort_order' => 100,
'global' => ScopedAttributeInterface::SCOPE_STORE,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'adminhtml_only' => true,
'filterable' => true,
'comparable' => true,
'is_used_in_grid' => true,
'is_visible_in_grid' => true,
'is_filterable_in_grid' => true,
'is_searchable_in_grid' => true,
'visible_on_front' => false,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
}
}</pre><p>第 2 步: 在以下路径创建 di.xml</p><p>app\code\Vendor\Extension\etc\di.xml</p><p>现在,添加以下代码</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules">
<plugin name="vendor_custom_validation_for_extension_product_attribute" type="Vendor\Extension\Plugin\Product\Validationrules"/>
</type>
</config></pre><p>步骤 3:创建验证规则.php路径如下</p><p>app\code\Vendor\Extension\Plugin\Product\Validationrules.php</p><p>并且,按如下方式添加代码</p><pre class="brush:bash;toolbar:false"><?php
namespace Vendor\Extension\Plugin\Product;
use Magento\Catalog\Ui\DataProvider\CatalogEavValidationRules;
use Closure;
use Magento\Catalog\Api\Data\ProductAttributeInterface;
class Validationrules
{
public function aroundBuild(
CatalogEavValidationRules $rulesObject,
Closure $proceed,
ProductAttributeInterface $attribute,
array $data
){
$rules = $proceed($attribute,$data);
if($attribute->getAttributeCode() == 'attribute_code'){
//custom filter
$validationClasses = explode(' ', $attribute->getFrontendClass());
foreach ($validationClasses as $class) {
$rules[$class] = true;
}
}
return $rules;
}
}</pre><p>结论:</p><p>因此,通过这种方式,您可以在Magento 2中以编程方式成功应用自定义产品属性验证。</p><p><br/></p>