An vorhandene Funktionen dranhängen?

Kann man eine eigene Funktion am Ende einer bestehende Funktion ausführen, immer dann wenn die bereits vorhandene Funktion ausgeführt wird?

Geht so was?

Hintergrund:
Ich bin gerade dabei ein neues Modul für eine kleine Inventar-/Lagerbestandsverwaltung zu schreiben. Um den Lagerbestand nicht manuell nach einem Versand korrigieren zu müssen, würde ich mich gerne an die Funktion [I]sendorder()[/I] in der Klasse [I]Order_Overview[/I] dranhängen.

Also zuerst ganz normal die Funktion sendorder ausführen und dann den zusätzlichen Code. Die Lösung sollte (logischerweise) ohne eine Sourcecodeänderung an Order_Overview.php auskommen.

Vielen Dank schonmal
Joachim

P.S.: Wenn’s fertig ist gibt es das Modul auch wieder unter GPL für lau.

Im Modul:


    public function sendorder()
    {
        parent::sendorder();
        //dein Code
    }

Erstellung des Moduls:http://wiki.oxidforge.org/Tutorials#Informations_on_how_to_create_Modules_.2F_Extensions_by_yourself

Hi,

in deinem module in der sendorder() erst mal $return = parent::sendorder(); dann deinen code dann return $return;

mfg

Danke für den Tipp, dann lag ich doch nicht falsch, sondern der Wurm ist irgendwo anders drin.

Ich habe

class Article_Inventory extends oxAdminDetails

Hier sind ist der neue Tab für die Artikel drin. (und testweise auch hier das Überladen der sendorder)

und

class myinventory extends Article_List

ein weiterer Menüeintrag, der die Auswertung des Lagerbestands ermöglicht

Leider zeigt das Überladen aber keine Wirkung - irgendein Tipp noch?

P.S.: Die “restliche” Funktionalität läuft fehlerfrei, bis jetzt hatte ich den Aufruf direkt in die sendorder eingebaut

ups, so ist das wenn man mit Replyen anfängt und dann zwischen drin mal telefoniert, ich probier es gleich mal aus.

irgendwie kriegt Oxid das Überladen nicht mit, es wird immer noch nur die Original sendorder() ausgeführt…

da ist ganz unten auch ein Hack dabei, vielleicht gehts ja dann

Danke, genau das ist es, ich hatte die Liste zwar auch schon mal gesehen, aber dann auch wohl wieder vergessen.

Aber wie sagte Scarlett (O’Hara): “Aber nicht heute. Verschieben wir es auf morgen”

Möchte hier mein kleines Problem einfügen.

Ich habe in 2 Modulen versucht die overview_order zu overloaden.

Allerdings kommt hier die Meldung bei Erweiterungen -> Modulen, dass die Datei nicht auffindbar wäre.

Das habe ich nur bei dieser Class.

Kann mir das jemand ebenfalls bestätigen?

Version >= 4.6.0

Danke und Gruß

Die Klasse heißt order_overview und nicht overview_order :wink:

na wenn das keine Marktlücke ist :smiley:

ja mein ich doch… Im code ist es richtig, hab es hier nur verdreht :wink:

zeig mal deine metadata.php und die ersten 2 Zeilen deiner php Datei


$aModule = array(
    'id'           => 'bla',
    'title'        => 'bla',
    'description'  => 'bla',
    'thumbnail'    => 'logo.png',
    'version'      => '1.0',
    'author'       => 'ich',
    'extend'       => array(    
        'order_overview'     => 'mein_modul/admin/ext_order_overview.php',
    )
);


class ext_order_overview extends ext_order_overview_parent {
....

da sind schon mal 2 Fehler:
1: module id muss gleich dem Modul ORdner sein, also in deinem Fall müssen beide entweder “bla” oder “mein_modul” sein

2: man erweitert eine Klasse mit einer anderen Klasse und nicht mit einer PHP Datei (diser Fehler hat mich vorhin 45 Minuten meines Lebens gekostet :smiley: ), so ist es richtig: (keine .php Dateiendung)


 'extend'       => array(     
        'order_overview'     => 'mein_modul/admin/ext_order_overview', 
    ) 

Hi,

das ID und Ordner gleich lauten müssen, ist klar. Die Namen hier sind auch nur Platzhalter.

Aber mit .php :eek: … Auch das ist klar nur gestern Abend haben meine Augen nicht mehr sehen wollen.

Danke für Deine Hilfe.

funzt dat denn jetzt?

Ja na klar. Manchmal ist Copy & Paste nicht so gut :wink: