Estoy trabajando en una extensión personalizada para magento 2 y necesito crear un atributo de categoría mediante programación,
Enumerarme los pasos exactos, porque no estoy seguro de si el código se colocará en InstallData.php o ¿dónde?
fuente
Estoy trabajando en una extensión personalizada para magento 2 y necesito crear un atributo de categoría mediante programación,
Enumerarme los pasos exactos, porque no estoy seguro de si el código se colocará en InstallData.php o ¿dónde?
Desde Magento 2.1 y la versión superior, también puede consultar el blog para crear un atributo mediante programación en detalle por, Crear atributo de categoría personalizada en Magento 2
Tienes que justo debajo del código dentro
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>
Esta es una versión anterior de Magento,
Para Magento Versión 2.0. *
Establecer atributo de categoría como a continuación,
app/code/Vendor/Categoryattr/Setup/InstallData.php
archivo,
<?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,
]
);
}
}
eliminar var/generation
carpeta y ejecutar comando,
Configuración de php bin / magento: actualización a categoría interna de trabajo.
A partir de magento 2.1 , también deberá crear un componente de interfaz de usuario antes de que el campo aparezca en admin.
Crear:
fuente
Usando el siguiente código puede agregar el atributo de categoría:
En su módulo, cree la carpeta de instalación, dentro cree el archivo InstallData.php
fuente
Buenas referencias arriba. Este funcionó bien para mí para crear un atributo para una categoría. Lo probé en v2.0.6.
Debe colocarse en app / code / Vendor / Extension / Setup / InstallData.php
En mi blog escribí un ejemplo completo de cómo hacerlo http://blog.mdnsolutions.com/magento2-create-custom-category-attribute/
fuente
fuente