Magento 2.4.4新增产品报componentType配置参数必填错误
问题原因
这个报错是Magento 2.4.4版本对后台UI组件渲染加了强制校验导致的,你的自定义属性配置有两处错误直接触发了该问题:
- 属性输入类型设置为
select(单选下拉),却错误绑定了仅用于多选属性的ArrayBackend后端模型,类型和处理逻辑不匹配,会导致UI组件配置解析异常 - 缺少2.4版本必填的表单作用域、前端UI组件声明参数,产品编辑页渲染属性时找不到对应的组件定义,组件名为空时就会抛出
componentType参数必填的错误。
修复步骤
1. 修正InstallData.php中的属性配置
调整属性参数匹配单选select的类型要求,补充必要的UI配置项:
<?php namespace Vendor\Module\Setup; use Magento\Eav\Setup\EavSetupFactory; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; use Magento\Catalog\Model\Product; use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface; 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( Product::ENTITY, 'mcwarehouse', [ 'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 'label' => 'Warehouse', 'input' => 'select', 'source' => \Vendor\Module\Model\Product\Attribute\Source\Warehouse::class, // 单选select无需绑定ArrayBackend,删除错误的backend_model配置使用默认后端即可 'required' => false, 'sort_order' => 50, 'global' => ScopedAttributeInterface::SCOPE_STORE, 'group' => 'Product Details', 'is_used_in_grid' => true, 'is_visible_in_grid' => false, 'is_filterable_in_grid' => false, // 补充必填的表单作用域声明 'used_in_forms' => [ 'adminhtml_catalog_product_edit', 'adminhtml_catalog_product_add' ], // 补充UI组件类型声明,避免解析失败 'frontend_component' => 'Magento_Ui/js/form/element/select' ] ); } }
如果你要做的是多选仓库属性,把
input值改为multiselect,保留ArrayBackend后端模型配置,同时把frontend_component值改为Magento_Ui/js/form/element/multiselect即可。
2. 清理错误的已安装属性,重新执行安装脚本
因为你之前已经运行过InstallData写入了错误配置的属性,直接修改文件不会自动覆盖旧配置,需要按以下流程操作:
- 先在数据库中找到
eav_attribute表中attribute_code = 'mcwarehouse'的记录删除,同时清理eav_entity_attribute、catalog_eav_attribute表中关联的对应记录 - 执行Magento命令重置模块状态、重新运行安装脚本、清理缓存:
bin/magento module:uninstall Vendor_Module bin/magento module:enable Vendor_Module bin/magento setup:upgrade bin/magento cache:clean bin/magento cache:flush
操作完成后再进入后台新增产品,就不会出现该componentType相关报错。
内容的提问来源于stack exchange,提问作者Shubam Pednekar
相关产品推荐
相关产品推荐

