답변:
프로그래밍 방식으로 제품 속성 추가 개요
InstallData.php
install()
방법 정의1 단계 : 파일 작성InstallData.php
우리는 다음에 위치한 InstallData 클래스로 시작할 것입니다.
app/code/Mageplaza/HelloWorld/Setup/InstallData.php.
이 파일의 내용 :
<?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;
}
}
2 단계 : install () 메소드 정의
<?php
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
}
3 단계 : 사용자 정의 속성 작성
다음은 InstallData.php
제품 속성을 프로그래밍 방식으로 작성하기위한 모든 라인 코드입니다 .
<?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' => ''
]
);
}
}
보시다시피, 모든 addAttribute 메소드는 다음을 요구합니다 : 속성을 추가하려는 엔티티의 타입 ID 속성의 이름 그룹, 입력 타입, 소스, 레이블 등과 같은 속성을 정의하기위한 키 값 쌍의 배열…
모듈 스크립트를 설치하려면 php bin / magento setup : upgrade 업그레이드 스크립트를 실행하면 sample_attribute 제품 속성이 생성됩니다.
제품 속성을 제거하려는 경우 addAttribute 대신 removeAttribute 메소드를 사용할 수 있습니다. 다음과 같습니다.
편집하다:
제거하려면 app / 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');
}
}
또한 사용자 정의 제품 속성을 만들기 위해 아래 URL을 따를 수 있습니다.