2016-07-06 6 views
0

Как удалить атрибут продукта в backand controller в Magento 2.1?removeAttribute magento 2

В Magento 1. * это было:

$setup = Mage::getResourceModel('catalog/setup','catalog_setup'); 
$setup->removeAttribute('catalog_product','my_attribute'); 

EDIT: Не предлагайте мне использовать установки/удаления методов. Читайте внимание вопрос: "удалить атрибут backand контроллера"

EDIT 2: я найти ответ

namespace Company\Module\Controller\Adminhtml\Shoptheme; //optional 

use Magento\Eav\Setup\EavSetup; 
use Magento\Eav\Setup\EavSetupFactory; 
use Magento\Framework\Setup\ModuleDataSetupInterface; 

class Removeattribute extends \Magento\Backend\App\Action { 
    private $dataSetup; 
    private $eavSetupFactory; 

    public function __construct(
     \Magento\Backend\App\Action\Context $context, 
     \Magento\Framework\Setup\ModuleDataSetupInterface $dataSetup, 
     \Magento\Eav\Setup\EavSetupFactory $eavSetupFactory 
    ) { 
     $this->dataSetup = $dataSetup; 
     $this->eavSetupFactory = $eavSetupFactory; 
     parent::__construct($context); 
    } 

    public function execute() { 
     $eavSetup = $this->eavSetupFactory->create(['setup' => $this->dataSetup]); 
     $eavSetup->removeAttribute(
      \Magento\Catalog\Model\Product::ENTITY, 
      'prod_special_descr'); 

     $this->messageManager->addSuccess('attribute removed'); 
     $this->_redirect('admin/dashboard/'); 
    } 
} 
+0

вы должны удалить атрибут, используя только метод установки сценария –

ответ

0

Вы можете удалить атрибут, используя ниже настройки скрипта:

<?php 

namespace Namespace\Company\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->removeAttribute(
      \Magento\Catalog\Model\Product::ENTITY, 
      'my_attribute'); 
    } 
}