Magento 2: Thêm thuộc tính sản phẩm theo chương trình


Câu trả lời:


34

Tổng quan về việc thêm thuộc tính sản phẩm theo chương trình

  • Bước 1: Tạo tập tin InstallData.php
  • Bước 2: Xác định install() phương thức
  • Bước 3: Tạo thuộc tính tùy chỉnh

Bước 1: Tạo tập tinInstallData.php

Chúng ta sẽ bắt đầu với lớp InstallData nằm ở

app/code/Mageplaza/HelloWorld/Setup/InstallData.php. 

Nội dung cho tập tin này:

<?php
namespace Mageplaza\HelloWorld\Setup;

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
{
    private $eavSetupFactory;

    public function __construct(EavSetupFactory $eavSetupFactory)
    {
        $this->eavSetupFactory = $eavSetupFactory;
    }

}

Bước 2: Xác định phương thức install ()

<?php

public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{

}

Bước 3: Tạo thuộc tính tùy chỉnh Dưới đây là tất cả các dòng mã InstallData.phpđể tạo thuộc tính sản phẩm theo chương trình.

<?php
namespace Mageplaza\HelloWorld\Setup;

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
{
    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(
            \Magento\Catalog\Model\Product::ENTITY,
            'sample_attribute',
            [
                'type' => 'int',
                'backend' => '',
                'frontend' => '',
                'label' => 'Sample Atrribute',
                'input' => '',
                'class' => '',
                'source' => '',
                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                'visible' => true,
                'required' => true,
                'user_defined' => false,
                'default' => '',
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'used_in_product_listing' => true,
                'unique' => false,
                'apply_to' => ''
            ]
        );
    }
}

Như bạn có thể thấy, tất cả các phương thức addAttribution yêu cầu là: Id loại của thực thể mà chúng ta muốn thêm thuộc tính Tên của thuộc tính Một mảng các cặp giá trị khóa để xác định thuộc tính như nhóm, loại đầu vào, nguồn, nhãn nhãn

Tất cả đã xong, vui lòng chạy tập lệnh nâng cấp php bin / magento setup: nâng cấp để cài đặt mô-đun và thuộc tính sản phẩm sample_attribution sẽ được tạo.

Nếu bạn muốn xóa thuộc tính sản phẩm, bạn có thể sử dụng phương thức removeAttribution thay vì addAttribution. Nó sẽ như thế này:

BIÊN TẬP:

để gỡ cài đặt, hãy tạo ứng dụng / mã / Mageplaza / HelloWorld / Setup / Uninstall.php.

<?php
namespace Mageplaza\HelloWorld\Setup;

use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UninstallInterface;

class Uninstall implements UninstallInterface
{
    private $eavSetupFactory;

    public function __construct(EavSetupFactory $eavSetupFactory)
    {
        $this->eavSetupFactory = $eavSetupFactory;
    }

    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        $eavSetup->removeAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'sample_attribute');
    }
}

Ngoài ra, bạn có thể theo dõi URL bên dưới để tạo thuộc tính sản phẩm tùy chỉnh.

URL: https://www.mageplaza.com/magento-2-module-development/magento-2-add-product-attribution-programmatically.html


Tôi muốn tạo một thuộc tính tải lên tập tin. Tôi phải làm gì để thay đổi? hướng dẫn vui lòng
phù du

@ephemeral bạn có thể thay đổi giá trị của 'đầu vào' => '', Bạn có thể đọc nó ở đây: magento.stackexchange.com/a/116829/2694
Andhi Irawan

Tôi phải thay 'int' bằng? trên liên kết này tôi không tìm thấy để tải lên tập tin :(
phù du

Như một gợi ý đặc biệt, đừng để trường 'input' => '' trống. Nó sẽ có hiệu lực một lỗi. magento.stackexchange.com/questions/204420/ Ấn
ZFNerd

xin chào @Prakash Patel, không cần trình cài đặt, chúng tôi có thể tạo thuộc tính sản phẩm không?
jafar pinjar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.