浏览文章
文章信息
Magento 2 –如何添加新的类别属性
12412
你好 在此Magento 2教程中,我们将创建一个新的category属性并将其显示在后端类别编辑页面上。我们将使用文本输入类型,但是可以使用类似的方法来创建Dropdowns,Radio等。我们将创建一个新模块(您也可以将此功能添加到现有模块中)。创建基本模块超出了本教程的范围。
接下来,我们需要为我们的模块创建一个安装脚本。Magento 2中的安装脚本应在Yereone / NewCategoryAttribute / Setup / InstallData.php中创建。内容如下
<?php namespace Yereone\CustomCategoryAttribute\Setup; use Magento\Eav\Setup\EavSetupFactory; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; use Magento\Framework\Setup\InstallDataInterface; class InstallData implements InstallDataInterface { /** * @var EavSetupFactory */ private $eavSetupFactory; /** * @param EavSetupFactory $eavSetupFactory */ public function __construct(EavSetupFactory $eavSetupFactory) { $this->eavSetupFactory = $eavSetupFactory; } /** * Installs data for a module * * @param ModuleDataSetupInterface $setup * @param ModuleContextInterface $context * @return void */ public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $setup->startSetup(); $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]); $eavSetup->addAttribute( \Magento\Catalog\Model\Category::ENTITY, 'custom_category_attr', [ 'type' => 'varchar', 'label' => 'Yereone Custom Category Attribute', 'input' => 'text', 'sort_order' => '', 'source' => '', 'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE, 'visible' => true, 'required' => false, 'user_defined' => false, 'default' => null, 'group' => '', 'backend' => '' ] ); $setup->endSetup(); } }
现在,我们在类别实体类型上有了新的属性。但是,如果我们希望它在后端可编辑,则需要将其添加到后端表单中。
类别后端表单由category_form.xml UI组件呈现。下一步是在
Yereone / NewCategoryAttribute / view / adminhtml / ui_component / category_form.xml中创建具有以下内容的新xml文件<?xml version="1.0"?> <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset name="yereone_settings"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="label" xsi:type="string" translate="true">Yereone</item> <item name="collapsible" xsi:type="boolean">true</item> <item name="sortOrder" xsi:type="number">100</item> </item> </argument> <field name="custom_category_attr"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item> <item name="label" xsi:type="string" translate="true">Yereone Custom Category Attribute</item> <item name="sortOrder" xsi:type="number">150</item> <item name="scopeLabel" xsi:type="string">[STORE VIEW]</item> </item> </argument> </field> </fieldset> </form>
现在,您应该已经在admin表单中看到了该值。如果要选择属性的输入类型选择框,则应在xml上这样指定它
<field name="original_category"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Yereone\NewCategoryAttribute\Model\Attribute\Source\Category</item> <item name="config" xsi:type="array"> <item name="label" xsi:type="string" translate="true">Original Category</item> <item name="dataType" xsi:type="string">int</item> <item name="formElement" xsi:type="string">select</item> <item name="sortOrder" xsi:type="number">300</item> <item name="scopeLabel" xsi:type="string">[STORE VIEW]</item> </item> </argument> </field>
其中“选项”是选择框的源模型。