Saya workign pada ekstensi khusus untuk magento 2 dan saya perlu membuat atribut kategori secara terprogram,
Daftarkan saya langkah-langkah yang tepat, karena saya tidak yakin apakah kode akan ditempatkan di InstallData.php atau di mana?
sumber
Saya workign pada ekstensi khusus untuk magento 2 dan saya perlu membuat atribut kategori secara terprogram,
Daftarkan saya langkah-langkah yang tepat, karena saya tidak yakin apakah kode akan ditempatkan di InstallData.php atau di mana?
Dari Magento 2.1 dan Versi yang lebih tinggi, Anda juga dapat merujuk blog untuk membuat atribut secara terprogram dalam data oleh, Membuat atribut kategori Kustom di Magento 2
Anda harus tepat di bawah kode di dalam
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>
Ini adalah versi Magento yang lebih lama,
Untuk Magento Versi 2.0. *
Atur atribut kategori seperti di bawah ini,
app/code/Vendor/Categoryattr/Setup/InstallData.php
mengajukan,
<?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,
]
);
}
}
hapus var/generation
folder dan jalankan perintah,
setup php bin / magento: tingkatkan untuk bekerja di dalam kategori.
Pada magento 2.1, Anda juga harus membuat komponen UI sebelum bidang tersebut muncul di admin.
Membuat:
sumber
Dengan menggunakan kode di bawah ini Anda dapat menambahkan atribut kategori:
Dalam modul Anda, buat folder Pengaturan, di dalamnya buat file InstallData.php
sumber
Referensi yang bagus di atas. Yang ini bekerja dengan baik bagi saya untuk membuat atribut untuk suatu kategori. Saya sudah menguji itu pada v2.0.6.
Itu harus ditempatkan di app / kode / Vendor / Extension / Setup / InstallData.php
Di blog saya, saya menulis contoh lengkap bagaimana melakukannya http://blog.mdnsolutions.com/magento2-create-custom-category-attribute/
sumber
sumber