En raison de la forte dépendance des fichiers XML, j'ai du mal à trouver la cause de cette erreur lors de la création d'une grille d'administration personnalisée:
Erreur fatale: la méthode Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString () ne doit pas lever d'exception dans C: \ wamp64 \ www \ mage2 \ vendor \ magento \ module-ui \ Component \ Wrapper \ UiComponent.php on line 0
J'essaie de créer une grille d'administration pour la sales_shipment_item
table.
Jusqu'à présent, j'ai:
Utilisé xdebug et le mettre dans la
__toString()
méthode de la classe Result, il ne montre pas quelle est l'erreur réelleJ'ai
var_dump
-ed les variables dans la__toString()
méthodeJ'ai activé le mode développeur dans Magento 2
J'ai vérifié
var/logs
et cela ne montre rien d'utile
J'ai réussi à créer d'autres grilles d'administration personnalisées, mais essayer de comprendre l'erreur réelle est comme une aiguille dans une botte de foin. Quelqu'un at-il trouvé un meilleur moyen de déboguer ces derniers? J'ai regardé tous les xml de la grille di.xml
, et les modèles et tout semble ok.
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
, interceptez l'exception et connectez-le ou imprimez-le. C'est ce que M2 aurait dû faire de toute façon.} catch (\Exception $e) { $this->logger->critical($e->getMessage()); $result = $e->getMessage(); }
l'erreur c'est ce que j'ai déjà posté. Quand j'ai eu ces erreurs auparavant, cela a généralement à voir avec les injections di.xml manquantes, mais elles sont impossibles à déboguer sans deviner, c'est pourquoi j'ai posté cette question.Réponses:
L'erreur que vous obtenez est en effet déclenchée
vendor\magento\module-ui\Component\Wrapper\UiComponent.php
.Cependant, il n'est pas déclenché à la ligne 0 mais lorsque le résultat est converti en chaîne dans la méthode suivante dans l'instruction return :
Voici ce que vous pouvez essayer de déboguer votre problème:
$result
contient avant que la conversion de chaîne et l'instruction return ne soient appelées$component->getName()
,$component->getComponentName()
et$component->getData()
pour vous aider à identifier le problèmela source
Cette erreur fatale s'est également produite lorsque j'ai ajouté une liste / grille personnalisée. J'ai résolu ce problème en changeant de constructeur et en lançant une collecte correcte pour ma liste / grille de données dans le constructeur du fournisseur de données. Exemple de grille personnalisée DataProvider.php
Mais vous devez créer \ Acme \ CustomModule \ Model \ ResourceModel \ Entity \ Listing \ Collection pour obtenir ses données dans le fournisseur de données
la source
SI vous avez migré M1 vers M2, vous êtes confronté à un problème inférieur à l'erreur lors de l'exécution de cmd Le magasin demandé n'a pas été trouvé. Vérifiez le magasin et réessayez.
veuillez ne pas modifier les fichiers du magasin de modules du fournisseur :
appliquez simplement les étapes ci-dessous:
Je suis récemment tombé sur cette même situation après la migration de Magento 1.9.3.8 vers 2.3.0 et j'espère que ma réponse pourra être utile. Le problème est venu de supprimer plusieurs magasins 96 d'entre eux pour être exact. J'ai essayé toutes les autres réponses ici mais obtenais toujours la même erreur.
Le correctif pour moi supprimait les anciennes données du magasin de l'intérieur du "core_config_data" . Le problème est que lorsque Magento charge les données de configuration d'exécution, il trouve les anciens magasins et essaie de les résoudre. Avant de nettoyer les données de la base de données, je vous recommande fortement d'exécuter la requête SELECT ci-dessous pour vous assurer de supprimer les magasins corrects.
AVERTISSEMENT: ASSUREZ-VOUS DE SAUVEGARDER VOTRE BASE DE DONNÉES AVANT DE L'EXÉCUTER!
Maintenant, exécutez toutes les commandes magento, vous pouvez voir le "Le magasin demandé n'a pas été trouvé. Vérifiez le magasin et réessayez" fixé par la requête
Maintenant, vérifiez votre administrateur au-dessus d'une erreur fatale également résolu blahhh ... blahh ...
(Remarque: - fatal error_Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString () en fonction du module de stockage, donc ne changez pas / vendor / module-store sinon la grille / le catalogue de la liste côté administrateur vous ne pouvez pas voir les données appropriées)
la source
Après d'innombrables heures et beaucoup de coups sur la tête contre le bureau, j'ai découvert que j'obtenais cette erreur, car j'utilisais xdebug (ce qui est incroyable!) Pour atteindre un point d'arrêt à une fonction de bas niveau, notamment
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
pour tester.Apparemment, d'une certaine manière, la sortie du débogueur lançait en fait une erreur qui a fait crier la méthode __toString.
J'étais devenu fou parce que l'erreur ne se manifestait que lorsque le débogueur était allumé et pensais que cela avait peut-être quelque chose à voir avec l'appel AJAX dans le remplissage de la liste d'interface utilisateur. Le désactiver semblait le faire fonctionner, il vaut donc la peine de l'essayer. Je ne sais pas trop comment fonctionne la fonctionnalité de point d'arrêt de xdebug (dans les produits IntelliJ en particulier ... éventuellement), à part que vous pouvez invoquer un point d'arrêt avec la ligne
xdebug_break()
. Il est très probable qu'avoir un point d'arrêt dans la méthode __toString soit juste une chose idiote à faire dans tous les cas.Je suppose que nous ne pouvons pas encore tout déboguer dynamiquement ... Un jour!
J'espère vraiment que cela aide quelqu'un d'autre.
la source