浏览文章

文章信息

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>


其中“选项”是选择框的源模型。


原创