Jak utworzyć atrybut produktu Magento 2 programowo z typem: Obszar tekstowy.
Jak utworzyć atrybut produktu Magento 2 programowo z typem: Obszar tekstowy.
Odpowiedzi:
Omówienie programowego dodawania atrybutu produktu
InstallData.php
install()
metodęKrok 1: Utwórz plikInstallData.php
Zaczniemy od klasy InstallData, która znajduje się w
app/code/Mageplaza/HelloWorld/Setup/InstallData.php.
Zawartość tego pliku:
<?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;
}
}
Krok 2: Zdefiniuj metodę install ()
<?php
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
}
Krok 3: Utwórz niestandardowy atrybut
Oto kod wszystkich wierszy, InstallData.php
aby programowo utworzyć atrybut produktu.
<?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' => ''
]
);
}
}
Jak widać, wszystkie metody addAttribute wymagają: Identyfikator typu encji, do której chcemy dodać atrybut Nazwa atrybutu Tablica par kluczowych wartości do zdefiniowania atrybutu, takiego jak grupa, typ danych wejściowych, źródło, etykieta…
Wszystko gotowe, uruchom skrypt aktualizacji php bin / magento setup: upgrade, aby zainstalować moduł, a atrybut produktu sample_attribute zostanie utworzony.
Jeśli chcesz usunąć atrybut produktu, możesz użyć metody removeAttribute zamiast addAttribute. Będzie tak:
EDYTOWAĆ:
w celu odinstalowania utwórz aplikację / 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');
}
}
Możesz również śledzić poniższy adres URL, aby utworzyć niestandardowy atrybut produktu.