J'essayais d'installer un plugin et j'ai supprimé var / generation et var / cache / *. J'ai vérifié le MAGE_MODE et je suis développeur, mais maintenant, quand j'accède au front-end et à l'administrateur, je reçois des erreurs aléatoires disant des choses méchantes comme:
Class Magento\Customer\Model\CustomerFactory does not exist
La classe Magento \ Sales \ Model \ ResourceModel \ Report \ OrderFactory n'existe pas
Certaines classes sont en cours de création, mais pas toutes. J'ai essayé à nouveau d'effacer le cache et le dossier de génération, mais je reçois juste les mêmes erreurs.
Des idées?
Réponses:
Magento 2 génère des classes Factory dans le
var/generation
répertoire. Donc, s'il y a un problème d'autorisation de dossier ou un problème de propriétaire de dossier avec ce répertoire, la classe d'usine ne peut pas être générée et vous obtenez une telle erreur.Lorsque vous effacez le
var/generation
répertoire et lui attribuez les autorisations appropriées, cette erreur doit être résolue.En savoir plus sur la génération de code dans Magento 2
la source
var/di
ouvar/cache
, voir devdocs.magento.com/guides/v2.2/install-gde/trouble/…Pour moi, j'ai supprimé le
var/generation
dossier puis j'ai exécutémagento setup:di:compile
ce qui a généré toutes les classes nécessaires.(dans mon cas: j'ai rencontré un problème de cache, j'ai supprimé le dossier de cache initial.)
Ensuite, cela a résolu mon problème. À votre santé !!
la source
Dans magento, les nouvelles versions comme 2.2.2 et au-dessus de ce chemin de génération de code sont devenues
vous devez donc également vérifier les autorisations pour ce dossier. Vous devez exécuter la commande suivante à la racine du répertoire d'installation de Magento pour résoudre ce problème:
la source
Les commandes suivantes doivent être exécutées:
En outre, une autorisation appropriée est nécessaire. Si en production, vous devez exécuter les autorisations appropriées. Mais, sur la machine locale, vous pouvez exécuter une autorisation complète:
la source
Accordez l'autorisation 777 et changez la propriété en www-data du dossier généré / code , puis exécutez la commande
sudo php bin/magento setup:di:compile
vider le cache et boom votre problème est résolula source
C'est juste un
<magento-root>/var/
problème d'autorisation de dossier.Exécuter la commande ci-dessous en utilisant le mode CLI
la source
Magento 2 crée les classes d'usine dans le
var/generation
dossier et si vous ajoutez un nouveau paramètre dans votre__construct()
et que sa classe d'usine n'existe pas, Magento 2 lance le message d'erreur ci-dessus. Même s'il existe déjà peu de solutions à vous poser, je peux vous proposer une autre solution qui ne vous oblige pas à vider votre dossier de génération. Veuillez utiliser la commande ci-dessous après toute modification relative aux classes Factory:Cette commande peut être plus utile sur le serveur de production.
la source
Classe ... L'usine n'existe pas signifie que votre classe de modèle n'est pas chargée. Comme Magento 2 basé sur une programmation modulaire, nous devons donc spécifier la classe de modèle où nous voulons utiliser explicitement. Nous pouvons utiliser notre classe de modèle en deux types:
1.par "utiliser"
Directement
Lorsque vous frappez l'URL ( http://domain.com/your module frontname) de votre plugin sur le navigateur, Magento génère le code de votre module comme ci-dessous:
Dans votre cas, vous devez vérifier que "CustomerFactory" et "OrderFactory" sont utilisés comme format ci-dessus ou non.
la source