Hallo beisammen, ich versuche gerade schon länger vergeblich unter Gambio 4.8.0.2 die Klasse order_ORIGIN aus /includes/classes/order.php zu overloaden. Aber egal wie wenig ich übernehme, schon das untige in \GXModules\ff-webdesigner\custom\Shop\Overloads\order\ff_order.inc.php führt zu Fehler 500. Warum? PHP: class ff_order_ORIGIN extends ff_order_ORIGIN_parent {} Warum gibts in der original order.php den if Block vorher? PHP: if(class_exists('order_ORIGIN', false) === false){//...}
Sollte das nicht ff_order.inc.php heißen? das sollte eigentlich wie die Datei heißen, also PHP: class ff_order extends ff_order_parent { Wei les die Klasse zwei Mal gibt, einmal unter /includes und ein zweites mal unter /admin/includes
ff_order.inc.php hatte mich nur hier vertippt, dateiname stimmt. _ORIGIN aus klassennamen entfernen half schon mal mit fehler 500, DANKE! aber: wird rein gar nichts überladen. getestet mit PHP: function query($order_id) { echo "yyyy"; }
Cache für Modulinfomationen geleert? Überladen funktioniert da auf jeden Fall, habe ich für die Klasse schon erfolgreich umgesetzt.
Von anderen System kenne ich es, dass ein einfaches echo gerne mal "unterdrückt" wird um Fehler zu vermeiden. Ob das bei Gambio so ist: Keine Ahnung. Was bei mir bisher aber immer funktionert hat zum testen: PHP: die('abcde');
ebenso ausprobiert in zwei überladenen funktionen. function query($order_id) und function getOrderData($oID) die("xxx"). in keiner wird was ausgegeben. auch debug log bringt rein gar nichts. für mich siehts so aus als würde der overload überhaupt nicht ausgeführt... ich checke immer über frontend, nach geleerten seiten/modul caches mit neuer order auf seite wk. im wk keinerlei ausgabe...dort sollte ich das aber sehen, oder? die klasse sollte ja mit dem ablegen im wk ausgelöst werden...
Ich kann mich jetzt irren, bin aber der Meinung, dass die neue order erst einen Schritt später in der checkout_shipping_address.php erzeugt wird. Vielleicht wäre die includes/classes/shopping_cart.php der bessere Ansatz für das was du versuchst?
leider auch nix... \GXModules\ff-webdesigner\custom\Shop\Overloads\shopping_cart\ff_shopping_cart.inc.php PHP: class ff_shoppingCart extends ff_shoppingCart_parent{ function get_products() { die ("xxx"); }}
PHP: class ff_shopping_cart extends ff_shopping_cart_parent{ function get_products() { die ("xxx"); }}
Der Pfad muss aus meiner Sicht aus anders sein: \GXModules\ff-webdesigner\custom\Shop\Overloads\shoppingCart\ff_shopping_cart.inc.php
dickes danke mal wieder an beide! mich verwirrte dass bei einzig dieser klasse dateiname und klassenname im original abweichend sind. der ORDNERNAME muss der shoppingCart, die klasse dann wie in shopping_cart.php ff_shopping_cart extends ff_shopping_cart_parent... woher hast du den korrekten ORDNERNAMEN, ddehning?
Der Ordnername bezieht sich auf den Namen der Klasse (ohne "_ORIGIN"), die überladen werden soll, nicht den Dateinamen.
nochmal update....immernoch nicht hinbekommen. aktuell drin in ff_order.inc.php: PHP: class ff_order extends ff_order_parent { public function __construct($order_id = '') { $this->info = array(); $this->totals = array(); $this->products = array(); $this->customer = array(); $this->delivery = array(); if(xtc_not_null($order_id)) { $this->query($order_id); } else { $this->cart(); } } function query($order_id) { $order_id = xtc_db_prepare_input($order_id); die("fff");}} sonst nichts. trotzdem fehler 500. warum? fehlt da ein parent construct? Cannot redeclare gm_save_order() (previously declared in /gm/inc/gm_save_order.inc.php:15)
@ff-webdesigner Das ist aus dem Code oben leider nicht vollständig lösbar. Du musst mal den ganzen Code und alle Dateien posten, so kann man das nicht mal bei sich einbauen um zu sehen was das Problem ist. Ein Fehler 500 deutet fast immer auf einen Syntax Fehler oder fehlende Dateien hin. Wenn man den Fehler nicht aus dem Log sieht kann man so nichts dazu sagen. Du kannst keine Funktion mit dem selben Namen doppelt definieren. Wähle einen anderen Namen für deine Funktion. Die Datei gm_save_order.inc.php kann man nicht überladen.