<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 中,您可以通过使用扩展属性来添加额外的属性值到产品、分类、订单等实体对象。下面是一个示例,展示如何在 Magento 2 中为产品添加一个扩展属性。</p><p><br/></p><p>首先,我们需要创建一个 InstallData.php 文件,在此文件中添加以下代码:</p><p><br/></p><pre class="brush:as3;toolbar:false"><?php
namespace Vendor\Module\Setup;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
use Magento\Eav\Model\Entity\Attribute\Source\Boolean;
use Magento\Eav\Model\Entity\Attribute\Source\Table;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
class InstallData implements InstallDataInterface
{
/**
* @var CategorySetupFactory
*/
private $categorySetupFactory;
/**
* @var EavSetupFactory
*/
private $eavSetupFactory;
/**
* InstallData constructor.
*
* @param CategorySetupFactory $categorySetupFactory
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(
CategorySetupFactory $categorySetupFactory,
EavSetupFactory $eavSetupFactory
) {
$this->categorySetupFactory = $categorySetupFactory;
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$entityTypeId = $categorySetup->getEntityTypeId('catalog_product');
$attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'my_custom_attribute',
[
'type' => 'int',
'label' => 'My Custom Attribute',
'input' => 'boolean',
'source' => Boolean::class,
'frontend' => '',
'required' => false,
'sort_order' => 50,
'global' => ScopedAttributeInterface::SCOPE_GLOBAL,
'used_in_product_listing' => true,
'visible_on_front' => true,
'apply_to' => ''
]
);
$setup->endSetup();
}
}</pre><p>在上面的代码中,我们使用了 Magento 的 EAV (Entity-Attribute-Value) 模型,使用 addAttribute 方法添加了一个名为 <span style="color: #ce9178;">"my_custom_attribute"</span> 的属性,它的类型为布尔值 (int),并使用 Boolean 类型的源。</p><p><br/></p><p>接下来,我们需要在模块的 module.xml 文件中添加安装程序的标记,以便 Magento 可以在安装模块时运行安装程序。在 <module> 标记中添加以下代码:</p><p><br/></p><pre class="brush:as3;toolbar:false"><module name="Vendor_Module" setup_version="1.0.0">
<sequence>
<module name="Magento_Catalog"/>
</sequence>
<data>
<upgrade_data>
<script_reference name="Vendor_Module"/>
</upgrade_data>
</data>
</module></pre><p><br/></p>