Magento 2: Ajouter un attribut de produit par programme


Réponses:


34

Présentation de l'ajout d'un attribut de produit par programme

  • Étape 1: créer un fichier InstallData.php
  • Étape 2: définir la install() méthode
  • Étape 3: créer un attribut personnalisé

Étape 1: créer un fichierInstallData.php

Nous allons commencer par la classe InstallData qui se trouve dans

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

Le contenu de ce fichier:

<?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;
    }

}

Étape 2: définir la méthode install ()

<?php

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

}

Étape 3: créer un attribut personnalisé Voici le code de toutes les lignes InstallData.phppour créer un attribut de produit par programme.

<?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' => ''
            ]
        );
    }
}

Comme vous pouvez le voir, tout ce que la méthode addAttribute requiert est: L'ID de type de l'entité à laquelle nous voulons ajouter l'attribut Le nom de l'attribut Un tableau de paires clé-valeur pour définir l'attribut tel que groupe, type d'entrée, source, étiquette…

Tout est fait, veuillez exécuter le script de mise à niveau php bin / magento setup: mettez à niveau pour installer le module et l'attribut de produit sample_attribute sera créé.

Si vous souhaitez supprimer l'attribut de produit, vous pouvez utiliser la méthode removeAttribute au lieu de addAttribute. Ce sera comme ça:

ÉDITER:

pour la désinstallation, créez l'application / le code / 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');
    }
}

Vous pouvez également suivre l'URL ci-dessous pour créer un attribut de produit personnalisé.

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


Je veux créer un attribut de téléchargement de fichier. Quels changements dois-je faire? gentiment guide
éphémère

@ephemeral vous pouvez changer la valeur de 'input' => '', vous pouvez le lire ici: magento.stackexchange.com/a/116829/2694
Andhi Irawan

Je dois remplacer «int» par? sur ce lien, je n'ai pas trouvé de téléchargement de fichier :(
éphémère

Comme conseil spécial, ne laissez pas le champ 'input' => '' vide. Cela provoquera une erreur. magento.stackexchange.com/questions/204420/…
ZFNerd

salut @Prakash Patel, sans installateur pouvons-nous créer un attribut de produit?
jafar pinjar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.