2017-11-20 3 views
0

Ich suche nach einer Datei überschreiben, die im Lieferantenverzeichnis ist, aber kein Bündel ist. Ich bin mit Symfony 2.7Symfony - So überschreiben Sie eine Lieferantenkomponente, die nicht in einem Bündel ist

arbeite Um genauer zu sein, versuche ich, ein Verfahren in dieser Datei außer Kraft zu setzen:

vendor/akeneo/pim-community-dev/src/Pim/Component/Catalog/Updater/ProductUpdater.php 

Und ich mag es in einer Datei tun:

src/MyApp/Component/Catalog/Updater/ProductUpdater.php 

Die gesamte Dokumentation, die ich gefunden habe, wird auf Teile eines Bundle verlassen. Also, ist das überhaupt möglich? Wenn es ist, wie es geht?

Mit freundlichen Grüßen!

PS: , bevor er antwortete, beachten Sie bitte, dass ich ein total Noob in Symfony bin :) Auch haben Sie vielleicht bemerkt, dass es eine Symfony App in meinem eigenen App ist, ist es normal, keine Sorge: D

+1

* es ist normal, keine Sorge * - na ja, nein, nicht wirklich. Es klingt, als wollten Sie das Projekt abzweigen, anstatt es als eine eigene Abhängigkeit zu betrachten. – iainn

+0

Wie wird diese Datei in Ihrer App verwendet? –

Antwort

0

Es gibt eine Möglichkeit, eine Datei mit Composer zu überschreiben.

Sie können in Ihrem composer.json unter dem autoload-> psr-4-Schlüssel etwas hinzufügen.

Der erste Teil ist der Namespace der Datei, die überschrieben werden soll, und der zweite Teil ist der neue Pfad.

Dies kann einige Probleme verursachen, wenn Sie neue Composer zum Composer hinzufügen, also stellen Sie sicher, dass Sie Composer dump-autoload ausführen, um die Autoload-Reihenfolge neu zu erstellen.

Ich mag diese Methode nicht wirklich, aber sie rettete mich ein paar Mal, um Dateien aus Bündeln zu reparieren, ohne das Bündel tatsächlich zu forcen, und wenn nichts anderes hilft, kann ich das als letzten Ausweg verwenden.

Mehr über Komponisten automatischen Laden hier

https://getcomposer.org/doc/01-basic-usage.md#autoloading

hoffte, das hilft,

Alexandru Cosoi

+0

Es scheint nicht zu funktionieren, ich denke, ich habe etwas Schlimmes getan. Ich habe dies zu meinem composer.json hinzugefügt: "psr-4": { "Pim \\ Komponente \\ Katalog \\ Updater \\ ProductUpdater \\": "src/MyApp/Bundle/MengePackBundle/Updater/ProductUpdater .php " } Ich habe auch versucht mit" src/MyApp/Bundle/MengePackBundle/Updater/"als Pfad zum Override, aber es hat auch nicht funktioniert. –

+0

Ich muss präzisieren, dass ich auch den Cache gelöscht ect ... :) –

+0

erhalten Sie einen Fehler auf Composer Dump-Autoload? ist auch Pim \\ Component \\ Catalog \ Updater \\ ProductUpdater \\ der richtige Namespace für die Klasse, die Sie überschreiben möchten? Stellen Sie außerdem sicher, dass src/MyApp/Bundle/MengePackBundle/Updater/ProductUpdater.php den alten Namespace verwendet, den Sie überschreiben möchten –

Verwandte Themen