Product attribute creation error in admin catalog product
-
15-04-2021 - |
سؤال
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 ?
المحلول
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' => [""]]
]
);
}
}
}
لا تنتمي إلى magento.stackexchange