Jump to content

[gelöst] Override greift nicht


Recommended Posts

Hallo allseits,

 

ich habe eine Änderung des AdminImportControllers gebastelt, die wunderbar funktioniert, wenn ich die entsprechende Funktion hart im Original AdminImportController.php FIle im Verzeichnis /controllers/admin/ umschreibe.

 

Wenn ich's aber sauber über einen Override machen möchte (unangetastete Original-Datei, Override-Datei mit vollständiger, abgeänderter Funktion in /override/controllers/admin/ ), mit - hoffentlich - richtigem Pointer "class AdminImportController extends AdminImportControllerCore" zu Beginn des Override Files, und wohl schon zig-Male gelöschter class_index.php, dann tut sich gar nichts.

 

War schon in 1.5.4 so und ist jetzt mit 1.5.5 das selbe in grün...

 

Kann mir irgendwer einen Tip geben, woran es liegen kann bzw. was ich falsch mache?

 

Danke!

Edited by sakiri (see edit history)
Link to comment
Share on other sites

Ich könnt mir noch vorstellen, dass evtl. Funktionen aus der Deiner Funktion heraus aufgerufen werden, die sich nicht von ausserhalb nutzen lassen.

PaymentModule.php war da früher so ein Kandidat, dort waren mehrere "privat" Funktionen drin. Die mussten auch mit in den Override, dann ging es.

 

LG Klaus / Lockesoft

Link to comment
Share on other sites

Hmm... klingt logisch, aber irgendwie dürfte ich Gurken auf den Augen haben ... oder einen Knopf in der Leitung ...

 

Mein Override besteht aus nur einer einzigen Funktion, und die ist als public definiert. De facto hab ich die komplette "public function __construct()" aus dem Original herauskopiert und "lediglich" um einige Felder erweitert, die ich auch übers CSV befüllt haben möchte.

Die Original AdminImportController.php hat auch keine einzige private function drin.

 

Ich hab auch schon versucht, alle public und public static Deklarationen ebenfalls ins Override zu stecken, ändert auch nichts daran, daß die Sache nicht greift. (In 1.5.4 hab ich  ursprünglich sogar die kompletten knapp 3000 Zeilen der Orginal-PHP ins Override gepackt und dann erst meine Ergänzungen hineingetippt - hat nix genutzt, erst als ich die Datei ins Verzeichnis /controllers/admin/ gestellt hab, hat's funktioniert.)

 

Darf ich die Override-php zur Inspektion per pm schicken?

Link to comment
Share on other sites

Danke!

Hat eine Weile gedauert bis ich verstanden hab, was unter "Codetags" gemeint ist (hab noch nicht ganz den Durchblick, wie dieses Forum funktioniert, was möglich ist und was nicht - sorry), aber 373 Zeilen in einen Forumspost direkt hinein zu kopieren erscheint mir ein bisserl viel.

Ich hab daher die Datei in ein ZIP File gepackt und hänge sie hier als Attachment dran:

Override_sakiri_AdminImportController.php.zip

 

(Info: Das Feld max_quantity ist nicht im PS-Standard enthalten sondern eine DB-Erweiterung, die ich von diesem Forumsthread übernommen habe: http://www.prestashop.com/forums/topic/210182-modification-maximum-quantity-mod/)

 

Wie gesagt, als Override funktionieren die Erweiterungen des CSV-Uploads nicht, direkt in die Originaldatei hineingeklatscht aber schon. Und ich würde gerne verstehen warum nicht...

Link to comment
Share on other sites

Da verhält sich PrestaShop völlig normal. Du hast nichts falsch gemacht, sondern es ist nur ein Denkfehler. ;)

 

Overrides machen genau das, was der Name sagt. Sie überschreiben vorhandene Objekte, indem sie den Klassen neue Eigenschaften oder Methoden hinzufügen. Hier gibt es aber nichts zu überschreiben, weil die Funktion zuvor gar nicht vorhanden war.

Daher klappt es mit der Originaldatei, aber nicht als Override.

Link to comment
Share on other sites

Hallo sakiri,

 

erstens muss ich mich entschuldigen. Ich hatte das Ganze nur überflogen. Du hast ja nur eine vorhandene Funktion erweitert und keine neue hinzugefügt. Daher greift meine Erklärung nicht. Es sollte eigentlich so funktionieren wie von dir geplant. Das ist aber nicht der Fall.

 

Das heißt aber nicht, dass ein Override damit unmöglich ist. Hier greift Plan B. Kopier einfach die komplette geänderte AdminImportController.php in das Override-Verzeichnis. So funktioniert es! ;)

 

Gruß

eleazar

Link to comment
Share on other sites

Danke für die Antwort und fürs genauer hinsehen!

 

Aber: Hast Du's mit einer kompletten geänderten AdminImportController.php im Override-Verzeichnis ausprobiert und hat's bei Dir funktioniert? Bei mir tut's das nämlich auch mit Plan B nicht. Weder bei meinem ersten entsprechenden Versuch unter 1.5.4, noch jetzt (soeben vor 9 Minuten) mit 1.5.5.

Berechtigung auf dem Verzeichnis ist 755, auf dem File selbst 644. Die class_index.php sowie der Inhalt von smarty/compile wurden vorher gelöscht, Pointer ist geändert auf "class AdminImportController extends AdminImportControllerCore". Die selbe Datei (mit Pointer andersrum) im Verzeichnis /controllers/admin flutscht jedoch wie sie soll. Es ist zum Haare raufen!!!

Ist der Ablageort  /override/controllers/admin/ für die adaptierte AdminImportController.php überhaupt richtig?

Link to comment
Share on other sites

Der Ablageort ist völlig richtig. Dummerweise habe ich es zunächst nur unter PrestaShop 1.5.3.1 ausprobiert. Da funktioniert es. Übrigens mit der erweiterten Original-Datei ohne Änderung des Pointers!

Aber leider tatsächlich nicht mit 1.5.4.1 oder 1.,5.5. Am Import wird leider bei PrestaShop immer wieder gebastelt. Offenbar hat es jemand geschafft, die Overrides hier zu deaktivieren. :(

 

Du solltest es also im Bugtracker melden.

Link to comment
Share on other sites

 Offenbar hat es jemand geschafft, die Overrides hier zu deaktivieren. :(

 

Du solltest es also im Bugtracker melden.

Hilf zwar nicht das Problem zu lösen, aber diese Diskussion hatten wir schon vor einiger Zeit, wo ich sagte, dass bestimmte overrides hinkünftig nicht mehr greifen werden...

Edited by cd2500 (see edit history)
Link to comment
Share on other sites

Ok, soweit so schlecht, aber wenn's nicht anders geht, dann eben mit direkt drüberklatschen. Werde den Override-Folder zur Dokumentation der Änderungen an den Originaldateien umfunktionieren... ;o)

 

Danke jedenfalls für die Klarstellung und die vielen Antworten! Ich markiere das Thema als gelöst, auch wenn's eine höchst unbefriedigende "Lösung" ist :(

 

(Und ... darf ich ganz vorsichtig darauf hinweisen, daß ich noch weitere Topics offen habe, auf die ich bislang noch gar keine Antworten habe? Da hoffe ich auch noch auf Hilfe von kundigen "alten Hasen"!)

Edited by sakiri (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...