Pim-community-dev: Doctrine-Proxy-Klasse wird nach dem Hinzufügen einer benutzerdefinierten Kategorieeigenschaft nicht generiert

Erstellt am 15. Juni 2017  ·  15Kommentare  ·  Quelle: akeneo/pim-community-dev

Ich stelle eine Frage

Hallo,

Ich folgte dem Kochbuch , um der Kategorieentität in 1.7.5 CE (ORM) eine nicht übersetzbare Eigenschaft hinzuzufügen.

In der Entwicklungsumgebung funktioniert alles einwandfrei, aber nach dem Wechsel zu prod stehe ich vor app/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php): failed to open stream: No such file or directory .

Ich habe versucht, den Cache manuell aufzuwärmen, dies generiert jedoch nur eine Doctrine-Proxy-Klasse für meine neue benutzerdefinierte Kategorieentität, die die BaseCategory erweitert. Die einzige Lösung, die ich bisher gefunden habe, besteht darin, diese Proxy-Klasse nach __CG__PimBundleCatalogBundleEntityCategory.php zu kopieren, was wahrscheinlich nicht gerade die beste Vorgehensweise ist ;-)

Könnten Sie mir einen Hinweis geben, was ich vermisse?

Vielen Dank!

question

Hilfreichster Kommentar

Hallo @DavidFeller ,

Sie können versuchen, Ihren Produktcache mit dem folgenden Befehl aufzuwärmen:
php app/console cache:warmup --env=prod --no-debug

Meistens werden Cache-Probleme behoben.

Grüße

Alle 15 Kommentare

Hallo @DavidFeller ,

Sie können versuchen, Ihren Produktcache mit dem folgenden Befehl aufzuwärmen:
php app/console cache:warmup --env=prod --no-debug

Meistens werden Cache-Probleme behoben.

Grüße

Hallo @momoss ,

Danke für die schnelle Antwort! :) :)

Leider habe ich das schon mehrmals versucht. Es scheint zu funktionieren (keine Fehlerausgabe), aber __CG__PimBundleCatalogBundleEntityCategory.php fehlt danach immer noch.
Zusätzlich habe ich die Entitätszuordnungen über php app/console doctrine:mapping:info überprüft.

Ich weiß, dass dies eher ein Doktrin- oder Symfonieproblem als ein wirklich akeneo-bezogenes ist, aber ich denke, ich vermisse ein kleines Detail in der AcmeCatalogBundle-Konfiguration, um die BaseCategory zu überschreiben.

Oder denkst du, es ist schlimmer, PHP auf 5.6 herunterzustufen?

Hallo @DavidFeller ,

Nach einem Gespräch mit @ damien-carcel teilt er mir mit, dass etwas in der Dokumentation fehlte. Wir haben es gestern aktualisiert.

Können Sie Ihre Category class einchecken, vielleicht fehlt eine Methode:

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

Grüße

Hallo @momoss ,

Ah ok, das werde ich überprüfen. Ich dachte, diese Methode würde nur für den zweiten Teil der Dokumente benötigt (übersetzbare Eigenschaften). Da ich nur ein Kontrollkästchen hinzugefügt habe, habe ich diesen Teil "ignoriert". ;-);

Ich denke, ich werde versuchen, von vorne zu beginnen und eine übersetzbare Eigenschaft zu erstellen.

Vielen Dank für Ihre Hilfe und Grüße,
David

Ich habe das gleiche Problem mit der neuesten Version 2.0. Genau das gleiche Problem und ich habe die gleichen Dokumente befolgt.

Und ich habe das Feld als übersetzbar hinzugefügt. Es wird der Datenbank hinzugefügt, funktioniert jedoch in der Produktionsumgebung immer noch nicht.
Dies ist, was ich vom Produktionsserver selbst bekommen habe und ich habe den gleichen Fehler. "" Kompilierungsfehler: require (): Fehler beim Öffnen erforderlich '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php'

Hallo @Nebojsaa .

Es tut mir leid zu hören, dass dieses Kochbuch bei Ihnen nicht funktioniert. Ich habe es gerade vollständig von einem pim-community-standard aus getestet. Es funktioniert für mich. Es gibt nur einen Fehler im FormType in Bezug auf das Widget: Die alte Notation funktioniert mit Symfony 3.4 nicht mehr.

Sie können meinen Code in dieser Pull-Anfrage https://github.com/damien-carcel/pim-community-standard/pull/1 sehen. Der Fehler, über den ich spreche, ist im letzten Commit. Ich werde die Dokumentation so schnell wie möglich aktualisieren.

Ich habe das Kochbuch nicht vollständig befolgt: Alles ist in AppBundle abgelegt und alle Dienste und Parameter in services.yml deklariert. Ich habe auch PHP 7.1 Typehint hinzugefügt. Dies ändert jedoch nichts an der Gültigkeit des Kochbuchs (mit Ausnahme des Textbereichsproblems natürlich).

Bitte versuchen Sie, Ihren Code mit meinem zu vergleichen. Sie haben wahrscheinlich eine Dienst- / Parameterüberschreibung vergessen.

Vergessen Sie auch nicht, dass die Codebeispiele im Kochbuch gescrollt werden können. Ich habe zuerst die setDescription -Methode in der CategoryTranslation -Klasse verpasst.

Vergessen Sie nicht, Ihren Cache zu leeren (ihn vollständig mit rm -rf var/cache/* entfernen), FPM neu zu starten und erst dann Ihr Doctrine-Schema zu aktualisieren.

Sie können auch Cache-Probleme haben, wenn der Akeneo-Warteschlangendämon (für die Importe / Exporte) ausgeführt wird: Er verhindert, dass Ihr APC-Cache bereinigt wird, und verschmutzt dann Ihren Symfony-Cache erneut. Wenn Sie den Warteschlangendämon verwenden, lautet das richtige Verfahren:

  • Stoppen Sie den Daemon
  • rm -rf var/cache/*
  • Starten Sie FPM neu
  • Starten Sie den Daemon erneut
  • Aktualisieren Sie Ihr Doctrine-Schema

Übrigens, bitte posten Sie nicht zu geschlossenen Themen, da normalerweise niemand darauf antwortet / es sieht. Ich habe Ihren Kommentar nur gesehen, weil ich in der Konversation markiert war und eine GitHub-Benachrichtigung darüber hatte. Bitte öffnen Sie lieber eine neue Ausgabe und verlinken Sie die ursprüngliche.

Lassen Sie mich wissen, ob dies Ihnen geholfen hat.

Grüße,
Damien

Hmmm, das ist seltsam. Ich habe alles wie vorgeschlagen gemacht, aber ich kann es nicht zum Laufen bringen. Außerdem versuche ich, die Kategorie ohne Übersetzung hinzuzufügen. Ich denke, das hat mich nicht gestört.

[2018-01-12 05:55:50] request.CRITICAL: Nicht erfasste PHP-Ausnahme Symfony \ Component \ Debug \ Exception \ FatalErrorException: "Kompilierungsfehler: require (): Fehler beim Öffnen erforderlich '/ opt / bitnami / apps / akeneo / htdocs / var / cache / prod / doctrin / orm / Proxies / __ CG__PimBundleCatalogBundleEntityCategory.php '(include_path =' .: / opt / bitnami / php / lib / php ') "unter / opt / bitnami / apps / akeneo / htdocs / vendor /doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php Zeile 209 {"Ausnahme": "[Objekt] (Symfony \ Component \ Debug \ Exception \ FatalErrorException (Code: 0): Kompilierungsfehler: require (): Fehlgeschlagenes Öffnen erforderlich '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php' (include_path = ' /opt/bitnami/apps/akeneo/htdocs/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209) "} []

Grüße,
Nebojsaa

pim_enrich.form.type.category.class ist falsch, Sie verwenden Acme anstelle Ihres Bundles.

Alles andere ist in Ordnung. Ich habe gerade Ihr Bundle mit einem PIM-Community-Standard 2.0 verwendet, das Routing entfernt (es ist nutzlos) und die Entitätsüberschreibung in app/config/config.yml konfiguriert. Ich konnte eine Kategorie mit Ihren neuen Feldern ohne Probleme bearbeiten und speichern.
Ich musste auch Ihre Validierung auf Ihrem Feld deaktivieren, oder ich konnte die Icecat-Fixtures nicht installieren (Sie validieren, dass Ihre Felder nicht leer sein dürfen, aber sie sind in meinen Fixtures nicht vorhanden 😉).

Ich denke wirklich, dass das Problem von Ihrem Server kommt. Wenn Sie sich den Fehler in Ihrem vorherigen Beitrag ansehen, sieht es eindeutig als Problem des PHP-Cache aus. Auf dem Bitnami-Server könnte etwas ausgeführt werden, das verhindert, dass der Cache beim Neustart von FPM geleert wird.

Grüße,
Damien.

Hey Damien,
In Ordnung, ich war nie ein Systemadministrator in meinem Leben. Jetzt ist die Zeit.

Vielleicht ein paar Tipps außer denen von oben.
Wissen Sie, wo ich den Daemon stoppen und starten und fpm neu starten kann?
Ich benutze PHP 7.1.
Wissen Sie, welche Befehle ich verwenden soll?

Für den Neustart von FPM hängt dies von Ihrem Server ab. Welche Linux-Distribution verwenden Sie darauf? Die meisten von ihnen verwenden jetzt systemd als Init, sodass Sie FPM neu starten können sollten, indem Sie sudo systemctl restart php7.1-fpm ausführen (der Name des FPM-Prozesses kann sich von einem System zu einem anderen ändern).

Die Warteschlange ist ein einfacher PHP-Prozess, den Sie manuell oder mithilfe eines Supervisors starten können. Detaillierte Anweisungen finden Sie hier: https://docs.akeneo.com/latest/install_pim/manual/daemon_queue.html.

Hmm, habe es inzwischen geschafft.
Jetzt wird "Hallo Welt!" - Mein Standard index.html.twig ??

Oh ja. Normal. Sie verwenden den Befehl generate:bundle , richtig?
Sie müssen die Ansicht Default/index.html.twig , den Controller und das Routing aus Ihrem Bundle entfernen (vergessen Sie nicht, sie auch aus app/config/routing.yml zu entfernen). Sie sind nutzlos.
Dann sollte es funktionieren.

Nächster Fehler :-D
Nein, ich scherze nur ..
Vielen Dank.

Guten Morgen, Grüße an alle. Ich habe ein kleines Problem, ich arbeite an einem Projekt mit Symfony 4, ich habe die Datenbank meines Projekts in postgressql, ich habe diesen Manager installiert und ich habe eine Verbindung mit diesem Framework hergestellt, aber wenn ich versuche, die Entitäten zu generieren Aus dieser Datenbasis mit dem Befehl PHP Bin / Konsole Doctrine: Mapping : Importieren Sie die Annotation "App \ Entity" --path = src / Entity, es gibt mir den folgenden Fehler:

In der Zeile 151 von ImportMappingDoctrineCommand.php:

Warnung: file_put_contents (src / Entity / "tsubtipoanestesia" .php): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis.

Ich würde gerne wissen, wie ich es lösen kann.
Vielen Dank.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen