Pim-community-dev: Classe proxy Doctrine non générée après l'ajout d'une propriété de catégorie personnalisée

Créé le 15 juin 2017  ·  15Commentaires  ·  Source: akeneo/pim-community-dev

Je pose une question

Salut,

J'ai suivi le livre de

Tout fonctionne bien dans l'environnement de développement, mais après être passé à prod, je suis confronté à app/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php): failed to open stream: No such file or directory .

J'ai essayé de réchauffer manuellement le cache, mais cela ne génère qu'une classe proxy de doctrine pour ma nouvelle entité de catégorie personnalisée qui étend la BaseCategory. La seule solution que j'ai trouvée jusqu'à présent est de copier cette classe proxy dans __CG__PimBundleCatalogBundleEntityCategory.php, ce qui n'est probablement pas exactement la meilleure pratique ;-)

Pouvez-vous me donner une idée de ce qui me manque?

Merci!

question

Commentaire le plus utile

Bonjour @DavidFeller ,

Vous pouvez essayer de réchauffer votre cache de production avec la commande suivante:
php app/console cache:warmup --env=prod --no-debug

La plupart du temps, il corrige les problèmes de cache.

Salutations

Tous les 15 commentaires

Bonjour @DavidFeller ,

Vous pouvez essayer de réchauffer votre cache de production avec la commande suivante:
php app/console cache:warmup --env=prod --no-debug

La plupart du temps, il corrige les problèmes de cache.

Salutations

Bonjour @momoss ,

Merci pour la réponse rapide! :)

Malheureusement, c'est ce que j'ai déjà essayé plusieurs fois. Cela semble fonctionner (pas de sortie d'erreur), mais __CG__PimBundleCatalogBundleEntityCategory.php est toujours manquant par la suite.
De plus, j'ai vérifié les mappages d'entités via php app/console doctrine:mapping:info .

Je sais que c'est plutôt un problème de doctrine ou de symfony que vraiment lié à Akeneo, mais je suppose qu'il me manque un petit détail dans la configuration d'AcmeCatalogBundle en termes de remplacement de la catégorie de base.

Ou pensez-vous que c'est pire d'essayer de rétrograder PHP à 5.6?

Bonjour @DavidFeller ,

Après discussion avec @ damien-carcel, il m'informe qu'il manquait quelque chose dans la documentation, nous l'avons mise à jour hier.

Pouvez-vous enregistrer votre Category class , il manque peut-être une méthode:

public function getTranslationFQCN() { return CategoryTranslation::class; }

Salutations

Bonjour @momoss ,

Ah ok, je vais vérifier ça. Je pensais que cette méthode n'était nécessaire que pour la deuxième partie de la documentation (propriétés traduisibles). Depuis que j'ai seulement ajouté une case à cocher, j'ai "ignoré" cette partie. ;-)

Je pense que je vais essayer de recommencer et de créer une propriété traduisible.

Merci pour votre aide et vos salutations,
David

J'ai le même problème avec la dernière version 2.0. Exactement le même problème et j'ai suivi les mêmes documents.

Et j'ai ajouté le champ comme traduisible. Il est ajouté à la base de données, mais il ne fonctionne toujours pas dans l'environnement de production.
C'est ce que j'ai obtenu du serveur de production lui-même et j'ai rencontré la même erreur. "" Erreur de compilation: require (): échec de l'ouverture requise '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php'

Bonjour @Nebojsaa .

Désolé d'apprendre que ce livre de recettes ne fonctionne pas pour vous. Je viens de le tester complètement à partir d'un pim-community-standard , cela fonctionne pour moi, il n'y a qu'une seule erreur dans le FormType concernant le widget: l'ancienne notation ne fonctionne plus avec Symfony 3.4.

Vous pouvez voir mon code dans cette pull request https://github.com/damien-carcel/pim-community-standard/pull/1. L'erreur dont je parle est dans le dernier commit. Je mettrai à jour la documentation dès que possible.

Je n'ai pas entièrement suivi le livre de recettes: tout est placé dans AppBundle et tous les services et paramètres déclarés dans services.yml . J'ai également ajouté une indication de type PHP 7.1. Mais cela ne change pas la validité du livre de cuisine (sauf pour le problème de textarea bien sûr).

Essayez de comparer votre code avec le mien, vous avez probablement oublié un remplacement de service / paramètre.

N'oubliez pas non plus que les exemples de code dans le livre de recettes peuvent être défilés. J'ai manqué la méthode setDescription dans la classe CategoryTranslation au début.

Enfin, n'oubliez pas à la fois de vider votre cache (supprimez-le complètement avec rm -rf var/cache/* ), de redémarrer FPM et de mettre à jour votre schéma Doctrine.

Vous pouvez également avoir des problèmes de cache si le démon de file d'attente Akeneo (pour les importations / exportations) est en cours d'exécution: cela empêchera le nettoyage de votre cache APC, puis polluera à nouveau votre cache Symfony. Si vous utilisez le démon de file d'attente, la procédure correcte est la suivante:

  • arrête le démon
  • rm -rf var/cache/*
  • redémarrer FPM
  • redémarrez le démon
  • mettre à jour votre schéma Doctrine

Btw, veuillez ne pas publier sur des problèmes fermés, car généralement personne ne répond / ne le voit. Je n'ai vu votre commentaire que parce que j'ai été tagué dans la conversation et que j'ai reçu une notification GitHub à ce sujet. Veuillez préférer ouvrir un nouveau numéro et lier le numéro original.

Faites-moi savoir si cela vous a aidé.

Salutations,
Damien

Hmmm, c'est bizarre. J'ai tout fait comme suggéré, mais je n'arrive pas à le faire fonctionner. J'essaye également d'ajouter la catégorie sans traduction. Donc je pense que cela ne m'a pas dérangé.

[2018-01-12 05:55:50] request.CRITIQUE: Exception PHP non interceptée Symfony \ Component \ Debug \ Exception \ FatalErrorException: "Erreur de compilation: require (): échec de l'ouverture requise '/ opt / bitnami / apps / akeneo / htdocs / var / cache / prod / doctrine / orm / Proxies / __ CG__PimBundleCatalogBundleEntityCategory.php '(include_path ='.: / opt / bitnami / php / lib / php ') "à / opt / bitnami / apps / akeneo / htdocs / vendor /doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php ligne 209 {"exception": "[objet] (Symfony \ Component \ Debug \ Exception \ FatalErrorException (code: 0): Erreur de compilation: require (): Échec de l'ouverture requise '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php' (include_path = '.: / Opt / bitnami / php / lib / php') à /opt/bitnami/apps/akeneo/htdocs/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209) "} []

Salutations,
Nebojsaa

pim_enrich.form.type.category.class est faux, vous utilisez Acme au lieu de votre bundle.

Tout le reste est OK. Je viens d'utiliser votre bundle avec un pim-community-standard 2.0, supprimez le routage (c'est inutile) et configurez le remplacement d'entité dans app/config/config.yml . J'ai pu modifier et enregistrer une catégorie avec vos nouveaux champs sans aucun problème.
J'avais aussi besoin de désactiver votre validation sur votre terrain, ou je n'ai pas pu installer les fixtures de glace (vous validez que vos champs ne peuvent pas être vides, mais ils n'existent pas dans mes fixtures 😉).

Donc je pense vraiment que le problème vient de votre serveur. Et en regardant l'erreur dans votre article précédent, cela ressemble clairement à un problème de cache PHP. Quelque chose peut être en cours d'exécution sur le serveur bitnami qui empêche l'effacement du cache lorsque vous redémarrez FPM.

Salutations,
Damien.

Salut Damien,
D'accord, je n'ai jamais été administrateur système de ma vie. Le moment est venu.

Peut-être quelques conseils sauf ceux d'en haut.
Savez-vous où comment puis-je arrêter et démarrer le démon et redémarrer fpm?
J'utilise php 7.1.
Savez-vous quelles commandes dois-je utiliser?

Pour redémarrer FPM, cela dépendra de votre serveur. Quelle distribution Linux utilisez-vous dessus? La plupart d'entre eux utilisent maintenant systemd comme init, vous devriez donc pouvoir redémarrer FPM en exécutant sudo systemctl restart php7.1-fpm (le nom du processus FPM peut changer d'un système à un autre).

La file d'attente est un simple processus php que vous pouvez lancer manuellement ou à l'aide d'un superviseur. Vous pouvez trouver des instructions détaillées ici: https://docs.akeneo.com/latest/install_pim/manual/daemon_queue.html.

Hmm, ont réussi entre-temps.
Maintenant, il affiche "Hello World!" - Mon index par défaut.html.twig ??

Oh oui. Normal. Vous utilisez la commande generate:bundle , non?
Vous devez supprimer la vue Default/index.html.twig , le contrôleur et le routage de votre bundle (n'oubliez pas de le supprimer également de app/config/routing.yml ). Ils sont inutiles.
Ensuite, cela devrait fonctionner.

Erreur suivante :-D
Non, je plaisante juste ...
Merci beaucoup.

bonjour, salutations a tous. J'ai un petit problème, je travaille sur un projet avec Symfony 4, j'ai la base de données de mon projet dans postgressql, j'ai installé ce gestionnaire, et j'ai établi une connexion avec lui avec ledit framework, mais quand j'essaye de générer les entités à partir de cette base de données avec la commande php bin / console doctrine: mapping : import "App \ Entity" annotation --path = src / Entity, cela me donne l'erreur suivante:

Dans ImportMappingDoctrineCommand.php ligne 151:

Avertissement: file_put_contents (src / Entity / "tsubtipoanestesia" .php): impossible d'ouvrir le flux: aucun fichier ou répertoire de ce type.

J'aimerais savoir comment le résoudre.
Merci.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

kanduvisla picture kanduvisla  ·  3Commentaires

a2xchip picture a2xchip  ·  5Commentaires

Jacky75 picture Jacky75  ·  3Commentaires

henryktews picture henryktews  ·  4Commentaires

lpxavi picture lpxavi  ·  3Commentaires