Je travaille sur une extension personnalisée pour magento 2 et j'ai besoin de créer un attribut de catégorie par programme,
Énumérez-moi les étapes exactes, car je ne suis pas sûr que le code soit placé dans InstallData.php ou où?
la source
Je travaille sur une extension personnalisée pour magento 2 et j'ai besoin de créer un attribut de catégorie par programme,
Énumérez-moi les étapes exactes, car je ne suis pas sûr que le code soit placé dans InstallData.php ou où?
Depuis Magento 2.1 et la version supérieure, vous pouvez également consulter le blog pour créer un attribut par programme en détail par, Créer un attribut de catégorie personnalisé dans Magento 2
Vous devez juste en dessous du code à l'intérieur
For Magento Version 2.1.*
app / code / {Packagename} / {Modulename} /Setup/InstallData.php
<?php
namespace {Packagename}\{Modulename}\Setup;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Catalog\Setup\CategorySetupFactory;
class InstallData implements InstallDataInterface
{
/**
* Category setup factory
*
* @var CategorySetupFactory
*/
private $categorySetupFactory;
/**
* Init
*
* @param CategorySetupFactory $categorySetupFactory
*/
public function __construct(CategorySetupFactory $categorySetupFactory)
{
$this->categorySetupFactory = $categorySetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$installer = $setup;
$installer->startSetup();
$categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
$entityTypeId = $categorySetup->getEntityTypeId(\Magento\Catalog\Model\Category::ENTITY);
$attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId);
$categorySetup->addAttribute(
\Magento\Catalog\Model\Category::ENTITY, 'custom_attribute', [
'type' => 'varchar',
'label' => 'Custom Attribute Description',
'input' => 'textarea',
'required' => false,
'sort_order' => 100,
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
'group' => 'General Information',
'is_used_in_grid' => true,
'is_visible_in_grid' => false,
'is_filterable_in_grid' => true,
]
);
$installer->endSetup();
}
}
app / code / {Packagename} / {Modulename} /view/adminhtml/ui_component/category_form.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="general">
<field name="custom_attribute">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">50</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">input</item>
<item name="label" xsi:type="string" translate="true">Custom Attribute Name</item>
</item>
</argument>
</field>
</fieldset>
</form>
Ceci est une ancienne version de Magento,
Pour Magento version 2.0. *
Définissez l'attribut de catégorie comme ci-dessous,
app/code/Vendor/Categoryattr/Setup/InstallData.php
fichier,
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Vendor\CategoryAttribute\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;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
/** @var EavSetup $eavSetup */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
/**
* Add attributes to the eav/attribute
*/
$eavSetup->addAttribute(
\Magento\Catalog\Model\Category::ENTITY,
'custom_attribute',
[
'type' => 'varchar',
'label' => 'Custom Attribute Description',
'input' => 'textarea',
'required' => false,
'sort_order' => 100,
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
'group' => 'General Information',
'is_used_in_grid' => true,
'is_visible_in_grid' => false,
'is_filterable_in_grid' => true,
]
);
}
}
supprimer le var/generation
dossier et exécuter la commande,
configuration de php bin / magento: passez à la catégorie working inside.
À partir de magento 2.1, vous devrez également créer des composants d'interface utilisateur avant que le champ n'apparaisse dans admin.
Créer:
la source
En utilisant le code ci-dessous, vous pouvez ajouter un attribut de catégorie:
Dans votre module, créez le dossier d'installation, à l'intérieur, créez le fichier InstallData.php
la source
Bonnes références ci-dessus. Celui-ci a bien fonctionné pour moi pour créer un attribut pour une catégorie. Je l'ai testé sur v2.0.6.
Il doit être placé dans app / code / Vendor / Extension / Setup / InstallData.php
Dans mon blog, j'ai écrit un exemple complet sur la façon de le faire http://blog.mdnsolutions.com/magento2-create-custom-category-attribute/
la source
la source