Erreur de produit de migration Magento: UiComponentFactory-> argumentsResolver ('created_by', NULL)

9

J'essaie de migrer mon Magento 1.9.3.4 vers Magento 2.2.2 avec l'outil de migration de données.

Je l'ai fait et le magasin fonctionne en localhost; J'ai les clients, les ventes, les pages statiques et les produits.

Je reçois cette erreur fatale lorsque j'ai essayé de modifier un produit:

Erreur fatale: TypeError non intercepté: l'argument 2 passé à Magento \ Framework \ View \ Element \ UiComponentFactory :: argumentsResolver () doit être du tableau de types, null donné, appelé dans D: \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php à la ligne 212 et défini dans D: \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php: 164 Trace de pile:

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-> préparer dans D: \ xampp \ htdocs \ magento2 \ vendor \ magento \ framework \ View \ Element \ UiComponentFactory.php on line 164

Une suggestion?

davincy
la source
Avez-vous fait l'indexation
Amit Bera
Avez-vous fait l'indexation? J'espère que l'attribut personnalisé created_by 'suggère de supprimer cet attribut, puis de l'essayer
Amit Bera

Réponses:

13

J'ai eu exactement la même erreur lors de la création d'un module personnalisé. Je ne sais pas si cela résoudra votre cas, mais peut-être que cela aidera à éclairer ce qui se passe.

Dans mon XML de mise en page personnalisée, j'avais un uiComponent qui n'était pas encore défini. Fichier:

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

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

La définition de ce composant d'interface utilisateur (ou la suppression de ce nœud uiComponent dans mon XML de mise en page) a résolu le problème pour moi.

Mark Rieth
la source
4

J'ai eu une telle erreur après la migration et l'un des attributs avait une coutume frontend_input. Je vois dans votre trace de pile que le problème vient du created_bychamp. Vous devriez peut-être définir le frontend_inputpour ce champ textou quelque chose de similaire.

Zsolti
la source
4

Dans notre cas, ce problème était également lié à une migration de 1.9.4 à 2.2.7 et c'était à un module de précommande qui a ajouté des attributs au site Magento 1.

Nous avons dû mettre à jour le tableau eav_attributeet modifier frontend_inputde 0à text.

Voir notre requête de base de données ci-dessous:

UPDATE  magento2.eav_attribute  SET  frontend_input ='text' WHERE  attribute_id = 186;
UPDATE  magento2.eav_attribute  SET  frontend_input ='text' WHERE  attribute_id = 187;
Maître
la source
Merci, cela m'aide à résoudre le problème.
Navin Bhudiya
3

Assurez-vous que le <uiComponent name="registration_form" />nom de uiComponent est le même que le nom du composant xml sous MyCompany/MyModule/view/frontend/ui_component/registration_form.xml

Ledian Hymetllari
la source
3

J'ai migré les données de magento 1.9.3.7à l' magento 2.2.5aide de l'outil de migration de données. Lorsque je clique sur le bouton Ajouter un produit via le panneau d'administration, cela m'a montré la même erreur. La façon dont je l'ai résolu était d'aller dans Admin-> Store-> Attribute Set . Et édité le jeu d'attributs Defaultet Migration_Default. Initialement, l' Migration_Defaultattribut avait les jeux d'attributs mais Defaultétait vide. J'ai ajouté les attributs à la Default Attribute Setet exécuté la reindexcommande

sudo php bin/magento indexer:reindex

Assurez-vous également que le Schedule Design Updategroupe contient les attributs suivants:

  • custom_design_from

  • custom_design_to

  • design personalisé

  • custom_layout

Et ça a marché pour moi ...;)

Usman Yousaf
la source
2

Vous pouvez vérifier si la valeur frontend_input de l'attribut est valide. Si vous disposez d'un champ personnalisé, vérifiez si le composant frontal est correctement défini.

Babarus George
la source
2

Dans mon cas, j'ai trouvé cet attribut et changé le texte en zone de texte. Cela résout le problème.

Pour ce faire, vous devez modifier l'attribut mais en mode inspection.

Cliquez avec le bouton droit de la souris sur l'étiquette de «Type d'entrée de catalogue», descendez pour trouver «sélectionnez l'option» et supprimez désactivé = «désactivé», cela activera l'option de sélection et vous pourrez passer au texte maintenant et enregistrer.

désactiver l'attribut

BartZalas
la source
2

Dans mon cas,

J'ai trouvé l'attribut created_by sur le "STORE -> [Attributes] Product".

entrez la description de l'image ici

Et changé frontend_label en "any_sting ...",

entrez la description de l'image ici

Il doit avoir de la valeur.

Cela résout le problème.

Lee Derting
la source
1

Dans mon cas, j'ai dû supprimer l'attribut à l'origine du problème. Par exemple, il s'agissait d'un nom d'attribut de produit personnalisé preorder. J'ai supprimé l'attribut et cela a bien fonctionné. Aucune des solutions ci-dessus n'était applicable pour moi car l'attribut n'était référencé dans aucun fichier xml.

Arvind07
la source
1

J'ai migré de magento 1.9.4 vers 2.3.3 et j'ai eu le problème.

Nous avons dû mettre à jour la table eav_attribute et le champ frontend_input de 0 à "text". Vous pouvez rechercher un attribut avec frontend_input= '0' Voir notre requête de base de données ci-dessous:

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

Je vois que l'attribut avec attribute_code sont "preorder" et "preorderdescript"

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

Bonne chance!

SyLuu - Leric
la source
Je vous remercie! Cela a fonctionné pour moi lors de la mise à niveau du 1.8.1.0 au 2.3.4
Dan Norris
0

J'ai eu du mal avec le même problème après la migration de Magento 1.7 vers Magento 2.

Je pense que vous avez un problème avec cet attribut de produit: created_by

Vous devez d'abord comprendre le rôle de cet attribut, l'utilisez-vous dans votre projet Magento 1? il peut être défini avec un module Magento 1.

Dans mon cas, j'ai eu un problème avec un autre attribut personnalisé:, aitfiles_titleet parce que je n'en ai pas besoin, je l'ai simplement supprimé de la base de données Magento 2.

delete from eav_attribute where attribute_code="aitfiles_title";

Si vous souhaitez faire de même pour votre attribut:

delete from eav_attribute where attribute_code="created_by";

Cela fonctionne pour moi et je peux accéder à la page du produit sur le panneau d'administration de Magento 2.

Abdelkebir ELHARFALI
la source
0

Vous pouvez accéder à vos jeux d'attributs et supprimer le created_by du groupe de produits respectif, puis réindexer le magasin. Cela a résolu mon problème.

Rafael Corrêa Gomes
la source
0

J'ai un problème similaire. Pour moi, c'était un problème avec l'attribut personnalisé. Dans ce cas, il fait partie \ UiComponentFactory-> argumentsResolver ('created_by', NULL) et l'attribut est created_by.

Je l'avais dans la table eav_attribute mais il a été manqué dans la liste des attributs du produit dans admin. Je viens donc de le supprimer par programme. Quelque chose comme ca:

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

Eh bien, tout le monde partage son expérience, je dois donc ajouter la mienne, peut-être que cela aidera quelqu'un :)

Je migre les données de Magento 1.9 vers Magento 2.3.4 avec l'outil de migration de données

Dans mon cas, je suis confronté à la même erreur et vérifie tous les cas ci-dessus mais rien ne peut aider à la fin J'ai remarqué que je n'ai pas de jeux d'attributs dans ma base de données: /

J'installe donc le nouveau Magento car je ne trouve pas la base de données Magento: / et récupère les valeurs des jeux d'attributs par défaut et les insère dans ma table d'attributs :)

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);

après cela, mon produit Magento 2.3.4 ajouter un nouveau produit et modifier le produit fonctionnera correctement :)

Comment je vérifie cette erreur Premièrement, lorsque je clique sur modifier et ajouter, j'obtiens seulement 500 erreurs, mais après avoir décommenté la ligne dans app / bootstrap.php, une erreur apparaîtra.

ini_set('display_errors', 1);
Zaheer Ahmad
la source