Magento迁移产品错误:UiComponentFactory-> argumentsResolver('created_by',NULL)


9

我正在尝试使用data-migration-tool将我的Magento 1.9.3.4迁移到Magento 2.2.2。

我做到了,商店在本地主机上工作了;我有客户,销售,静态页面和产品。

当我尝试编辑一种产品时,我收到此致命错误:

致命错误:未捕获的TypeError:传递给Magento \ Framework \ View \ Element \ UiComponentFactory :: argumentsResolver()的参数2必须为数组类型,给定为null,在D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ framework中调用212行上的\ View \ Element \ UiComponentFactory.php,并在D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php:164中定义:堆栈跟踪:

0 D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php(212):Magento \ Framework \ View \ Element \ UiComponentFactory-> argumentsResolver('created_by',NULL)

1 D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ module-ui \ Component \ Form \ Field.php(84):Magento \ Framework \ View \ Element \ UiComponentFactory-> create('created_by','',Array )

2 D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Layout \ Generator \ UiComponent.php(159):Magento \ Ui \ Component \ Form \ Field-> prepare()

3 D:\ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Layout \ Generator \ UiComponent.php(156):Magento \ Framework \ View \ Layout \ Generator \ UiComponent->在D:\ xampp \ htdocs中进行准备第164行上的\ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php

有什么建议吗?


您是否完成了索引
编制

您是否完成了索引编制?我希望created_by'自定义属性建议删除该属性然后再尝试
Amit Bera

Answers:


13

创建自定义模块时,我遇到了完全相同的错误。不知道这是否能解决您的问题,但也许会有助于阐明正在发生的事情。

在我的自定义布局xml中,我有一个尚未定义的uiComponent。文件:

MyCompany / MyModule / view / adminhtml / layout / mycompany_mymodule_index_index.xml

<uiComponent name="my_custom_form" /> <!-- my_custom_form.xml file does not exist -->

定义此UI组件(或在我的布局xml中删除该uiComponent节点)可以为我解决问题。


4

迁移后出现了这样的错误,其中一个属性具有自定义frontend_input。我在您的堆栈跟踪中看到问题出在created_by字段上。也许您应该frontend_input将该字段的设置为text或类似的值。


4

在我们的案例中,此问题还与从1.9.4到2.2.7的迁移有关,并且与将属性添加到Magento 1站点的预购模块有关。

我们必须更新表,eav_attributefrontend_input从修改0text

请参阅下面的数据库查询:

UPDATE  magento2.eav_attribute  SET  frontend_input ='text' WHERE  attribute_id = 186;
UPDATE  magento2.eav_attribute  SET  frontend_input ='text' WHERE  attribute_id = 187;

谢谢,它可以帮助我解决问题。
Navin Bhudiya

3

确保<uiComponent name="registration_form" />uiComponent的名称与下的xml组件名称相同 MyCompany/MyModule/view/frontend/ui_component/registration_form.xml


3

我使用数据迁移工具将数据从迁移magento 1.9.3.7magento 2.2.5。当我通过管理面板单击“添加产品”按钮时,它向我显示了相同的错误。我解决的方法是转到Admin-> Store-> Attribute Set。并编辑DefaultMigration_Default属性集。最初,“ Migration_Default属性”具有属性集,但“属性” Default为空。我将属性添加到Default Attribute Set并执行了reindex命令

sudo php bin/magento indexer:reindex

还要确保Schedule Design Update组包含以下属性:

  • custom_design_from

  • custom_design_to

  • 定制设计

  • custom_layout

它为我工作...;)


2

您可以检查属性的frontend_input值是否为有效值。如果您有一个自定义字段,请检查前端组件的定义是否正确。


2

就我而言,我找到了此属性,并将文本更改为文本区域。这样可以解决问题。

为此,您需要编辑属性,但要处于检查模式。

在“目录输入类型”的标签上单击鼠标右键,向下找到“选择选项”并删除disabled =“ disabled”,这将激活选择选项,您可以立即更改为文本并保存。

禁用属性


2

就我而言

我在“商店-> [属性]产品”上找到了created_by属性。

在此处输入图片说明

并将frontend_label更改为“ any_sting ...”,

在此处输入图片说明

它应该具有价值。

这样可以解决问题。


1

就我而言,我必须删除导致问题的属性。例如,它是一个自定义产品属性名称preorder。我删除了该属性,它工作正常。上述解决方案均不适用于我,因为该属性未在任何xml文件中引用。


1

我从magento 1.9.4迁移到2.3.3,然后得到了问题。

我们必须将表eav_attribute和字段frontend_input从0更新为“文本”。您可以使用frontend_input='0' 搜索属性。请参见下面的数据库查询:

SELECT * FROM `eav_attribute` WHERE `frontend_input` = '0'

我看到带有attribute_code的属性是“ preorder”和“ preorderdescript”

UPDATE  eav_attribute  SET  frontend_input ='text' WHERE  attribute_code = 'preorder';
UPDATE  eav_attribute  SET  frontend_input ='text' WHERE  attribute_code = 'preorderdescript';

祝好运!


谢谢!从1.8.1.0升级到2.3.4时,这对我有用
Dan Norris

0

从Magento 1.7迁移到Magento 2后,我一直在同一个问题上挣扎。

我认为您对此产品属性有疑问: created_by

首先,您需要了解该属性的作用,您是否在Magento 1项目中使用了该属性?可以使用Magento 1模块定义。

在我的情况下,我遇到了另一个自定义属性:aitfiles_title,并且由于不需要它,我将其从Magento 2数据库中删除了。

delete from eav_attribute where attribute_code="aitfiles_title";

如果您想对属性执行相同的操作:

delete from eav_attribute where attribute_code="created_by";

它对我有用,并且我可以访问Magento 2管理面板上的产品页面。



0

我有类似的问题。对我来说,这是自定义属性的问题。在这种情况下,它是\ UiComponentFactory-> argumentsResolver('created_by',NULL)的一部分,而属性是created_by。

我在eav_attribute表中拥有它,但是在admin的产品属性列表中未找到它。所以我只是以编程方式将其删除。像这样:

// $this->eavSetupFactory - \Magento\Eav\Setup\EavSetupFactory 
$eavSetup = $this->eavSetupFactory->create();
$entityTypeId = 4; // For catalog_product attribute
$eavSetup->removeAttribute($entityTypeId, 'speurtocht_attachment');

0

好吧,每个人都分享他们的经验,所以我必须添加我的知识,也许它会帮助某人:)

我使用数据迁移工具将数据从Magento 1.9迁移到Magento 2.3.4

就我而言,我遇到了相同的错误并检查了上述所有情况,但最后没有任何帮助,我发现我的数据库中没有属性集:/

所以我安装了新的Magento,因为找不到Magento数据库:/并获取默认属性集值并插入到属性表中:)

INSERT INTO `eav_attribute_set` (`attribute_set_id`, `entity_type_id`, `attribute_set_name`, `sort_order`) VALUES
(1, 1, 'Default', 2),
(2, 2, 'Default', 2),
(3, 3, 'Default', 1),
(4, 4, 'Default', 1),
(5, 5, 'Default', 1),
(6, 6, 'Default', 1),
(7, 7, 'Default', 1),
(8, 8, 'Default', 1);

之后,我的Magento 2.3.4产品添加新产品并编辑产品将正常工作:)

如何检查此错误 首先,当我单击“编辑并添加”时,我只会得到500错误,但是在取消注释app / bootstrap.php中的行后,将会看到错误。

ini_set('display_errors', 1);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.