Вопрос

I have UpgradeData.php script that will install the attributes which I need,

if (version_compare($context->getVersion(), '1.4.6', '<')) {
             
            $groupName = 'Data Configuration';
            $catalogSetup->addAttributeGroup(Product::ENTITY, 'Default', $groupName, 16);

            $catalogSetup->addAttribute(
                \Magento\Catalog\Model\Product::ENTITY,
                'commodity_code',
                [
                    'group' => $groupName,
                    'type' => 'varchar',
                    'frontend' => '',
                    'label' => 'commodity code',
                    'input' => 'varchar',
                    'class' => '',
                    'source' => '',
                    'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => false,
                    'default' => '',
                    'apply_to' => '',
                    'visible_on_front' => false,
                    'is_used_in_grid' => true,
                    'is_visible_in_grid' => false,
                    'is_filterable_in_grid' => false,
                    'used_in_product_listing' => true
                ]
            );

            $catalogSetup->addAttribute(
                \Magento\Catalog\Model\Product::ENTITY,
                'unit_of_measure',
                [
                    'group' => $groupName,
                    'type' => 'varchar',
                    'frontend' => '',
                    'label' => 'Unit of Measure',
                    'input' => 'varchar',
                    'class' => '',
                    'source' => '',
                    'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => false,
                    'default' => '',
                    'apply_to' => '',
                    'visible_on_front' => false,
                    'is_used_in_grid' => false,
                    'is_visible_in_grid' => false,
                    'is_filterable_in_grid' => false
                ]
            );
            
            $catalogSetup->addAttribute(
                \Magento\Catalog\Model\Product::ENTITY,
                'duty_amount',
                [
                    'group' => $groupName,
                    'type' => 'int',
                    'frontend' => '',
                    'label' => 'Duty Amount',
                    'input' => 'int',
                    'class' => '',
                    'source' => '',
                    'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => false,
                    'default' => '',
                    'apply_to' => '',
                    'visible_on_front' => false,
                    'is_used_in_grid' => false,
                    'is_visible_in_grid' => false,
                    'is_filterable_in_grid' => false
                ]
            );
        }

The attributes are created successfully. But after that if I open any products from Admin catalog then Im getting below error,

report.CRITICAL: TypeError: Argument 2 passed to Magento\Framework\View\Element\UiComponentFactory::argumentsResolver() must be of the type array, null given, called in /var/www/html/wpguat/vendor/magento/framework/View/Element/UiComponentFactory.php on line 235 and defined in /var/www/html/wpguat/vendor/magento/framework/View/Element/UiComponentFactory.php:183
Stack trace:
#0 /var/www/html/wpguat/vendor/magento/framework/View/Element/UiComponentFactory.php(235): Magento\Framework\View\Element\UiComponentFactory->argumentsResolver()
#1 /var/www/html/wpguat/vendor/magento/module-ui/Component/Form/Field.php(85): Magento\Framework\View\Element\UiComponentFactory->create()
#2 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(164): Magento\Ui\Component\Form\Field->prepare()
#3 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(161): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent()
#4 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(161): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent()
#5 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(161): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent()
#6 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(142): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent()
#7 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Generator/UiComponent.php(103): Magento\Framework\View\Layout\Generator\UiComponent->generateComponent()
#8 /var/www/html/wpguat/vendor/magento/framework/View/Layout/GeneratorPool.php(93): Magento\Framework\View\Layout\Generator\UiComponent->process()
#9 /var/www/html/wpguat/vendor/magento/framework/View/Layout.php(365): Magento\Framework\View\Layout\GeneratorPool->process()
#10 /var/www/html/wpguat/generated/code/Magento/Framework/View/Layout/Interceptor.php(68): Magento\Framework\View\Layout->generateElements()
#11 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout\Interceptor->generateElements()
#12 /var/www/html/wpguat/vendor/magento/framework/View/Page/Builder.php(65): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#13 /var/www/html/wpguat/vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#14 /var/www/html/wpguat/vendor/magento/framework/View/Layout.php(271): Magento\Framework\View\Layout\Builder->build()
#15 /var/www/html/wpguat/vendor/magento/framework/View/Layout.php(896): Magento\Framework\View\Layout->build()
#16 /var/www/html/wpguat/generated/code/Magento/Framework/View/Layout/Interceptor.php(293): Magento\Framework\View\Layout->getBlock()
#17 /var/www/html/wpguat/vendor/magento/module-backend/Model/View/Result/Page.php(26): Magento\Framework\View\Layout\Interceptor->getBlock()
#18 /var/www/html/wpguat/generated/code/Magento/Backend/Model/View/Result/Page/Interceptor.php(23): Magento\Backend\Model\View\Result\Page->setActiveMenu()
#19 /var/www/html/wpguat/vendor/magento/module-catalog/Controller/Adminhtml/Product/Edit.php(82): Magento\Backend\Model\View\Result\Page\Interceptor->setActiveMenu()
#20 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Catalog\Controller\Adminhtml\Product\Edit->execute()
#21 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callParent()
#22 /var/www/html/wpguat/vendor/magento/framework/App/Action/Plugin/ActionFlagNoDispatchPlugin.php(51): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}()
#23 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Framework\App\Action\Plugin\ActionFlagNoDispatchPlugin->aroundExecute()
#24 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}()
#25 /var/www/html/wpguat/generated/code/Magento/Catalog/Controller/Adminhtml/Product/Edit/Interceptor.php(23): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callPlugins()
#26 /var/www/html/wpguat/vendor/magento/framework/App/Action/Action.php(111): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->execute()
#27 /var/www/html/wpguat/vendor/magento/module-backend/App/AbstractAction.php(151): Magento\Framework\App\Action\Action->dispatch()
#28 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Backend\App\AbstractAction->dispatch()
#29 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callParent()
#30 /var/www/html/wpguat/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(143): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}()
#31 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch()
#32 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}()
#33 /var/www/html/wpguat/generated/code/Magento/Catalog/Controller/Adminhtml/Product/Edit/Interceptor.php(32): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callPlugins()
#34 /var/www/html/wpguat/vendor/magento/framework/App/FrontController.php(186): Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->dispatch()
#35 /var/www/html/wpguat/vendor/magento/framework/App/FrontController.php(118): Magento\Framework\App\FrontController->processRequest()
#36 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch()
#37 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent()
#38 /var/www/html/wpguat/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#39 /var/www/html/wpguat/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins()
#40 /var/www/html/wpguat/vendor/magento/framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch()
#41 /var/www/html/wpguat/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#42 /var/www/html/wpguat/vendor/magento/framework/App/Bootstrap.php(263): Magento\Framework\App\Http\Interceptor->launch()
#43 /var/www/html/wpguat/pub/index.php(29): Magento\Framework\App\Bootstrap->run()
#44 {main} [] []

I'm not getting this, do I need to create any Ui components for this ?

Это было полезно?

Решение

enter image description here

Delete old attribute from eav_attribute table and use below working code which is successfully tested check above screenshot for reference.

namespace Product\Attribute\Setup;

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

class UpgradeData implements UpgradeDataInterface {

private $eavSetupFactory;

/**
 * Constructor
 *
 * @param \Magento\Eav\Setup\EavSetupFactory $eavSetupFactory
 */
public function __construct(EavSetupFactory $eavSetupFactory)
{
    $this->eavSetupFactory = $eavSetupFactory;
}

/**
 * {@inheritdoc}
 */
public function upgrade(
    ModuleDataSetupInterface $setup,
    ModuleContextInterface $context
) {
    $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

    if (version_compare($context->getVersion(), "1.0.1", "<")) {
    
        $eavSetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'commodity_code',
            [
                'type' => 'varchar',
                'backend' => '',
                'frontend' => '',
                'label' => 'commodity code',
                'input' => 'text',
                'class' => '',
                'source' => '',
                'global' => 1,
                'visible' => true,
                'required' => false,
                'user_defined' => true,
                'default' => null,
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'used_in_product_listing' => false,
                'unique' => false,
                'apply_to' => '',
                'system' => 1,
                'group' => 'General',
                'option' => ['values' => [""]]
            ]
        );
        
        
    }

    if (version_compare($context->getVersion(), "1.0.1", "<")) {
    
        $eavSetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'unit_of_measure',
            [
                'type' => 'varchar',
                'backend' => '',
                'frontend' => '',
                'label' => 'Unit of Measure',
                'input' => 'text',
                'class' => '',
                'source' => '',
                'global' => 1,
                'visible' => true,
                'required' => false,
                'user_defined' => true,
                'default' => null,
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'used_in_product_listing' => false,
                'unique' => false,
                'apply_to' => '',
                'system' => 1,
                'group' => 'General',
                'option' => ['values' => [""]]
            ]
        );
        
        
    }

    if (version_compare($context->getVersion(), "1.0.1", "<")) {
    
        $eavSetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'duty_amount',
            [
                'type' => 'varchar',
                'backend' => '',
                'frontend' => '',
                'label' => 'Duty Amount',
                'input' => 'text',
                'class' => '',
                'source' => '',
                'global' => 1,
                'visible' => true,
                'required' => false,
                'user_defined' => true,
                'default' => null,
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'used_in_product_listing' => false,
                'unique' => false,
                'apply_to' => '',
                'system' => 1,
                'group' => 'General',
                'option' => ['values' => [""]]
            ]
        );
        
        
    }
}
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top