hallo zusammen,
ich habe die save Methode der klasse oxuser um das feld tradnr erweitert inkl. datenbank usw.
kurz vor der speicherung sieht es auch aus als ob es richtig dem objekt zugeordnet wird. aber es kommt einfach nicht in die datenbank an. hat jemand eine idee was das problem ist?
$tradenr = oxRegistry::getConfig()->getRequestParameter("tradnr");
if ($tradenr) {
$this->oxuser__extend_tradnr = new oxField($tradenr, oxField::T_RAW);
}
$blRet = parent::save();
Moin,
Hast du direkt in der DB geschaut oder nur im Backend, da wo es angezeigt werden sollte?
Es könnte nämlich so sein, dass das Fefld drin ist, aber sein Inhalt einfach nicht angezeigt wird. Hier musst du erst mal Views aktualisieren lassen, damit das neue Feld angezeigt wird.
Heißt das Feld in der DB “extend_tradnr” oder nur “tradnr”?
Und wie genau wurden diese Änderungen realisiert? (Modul oder direkt im Code)
Ich würde zuerst gucken, ob die Änderungen überhaupt greifen, falls diese im Modul zusammengefasst wurde,
und dann würde ich prüfen, ob dein request Parameter “tradnr” überhaupt vorhanden ist, dort wo die Funktion aufgerufen wird.
Hast du direkt in der DB geschaut oder nur im Backend, da wo es angezeigt werden sollte?
direkt in die Datenbank und für die views habe ich vor der Speicherung ein view update gemacht. Es scheint aber kein oxv_oxuser zu geben. Von daher ist das glaube ich unnötig oder?
Heißt das Feld in der DB “extend_tradnr” oder nur “tradnr”?
extend_tradnr
Und wie genau wurden diese Änderungen realisiert? (Modul oder direkt im Code)
per Modul. einfach extend der oxuser save Methode. Hier habe ich auch schon stumpf alles kopiert und vor dem parent:save() meine Erweiterung eingebaut. Aber das geht auch nicht.
Ich würde zuerst gucken, ob die Änderungen überhaupt greifen, falls diese im Modul zusammengefasst wurde,
und dann würde ich prüfen, ob dein request Parameter “tradnr” überhaupt vorhanden ist, dort wo die Funktion aufgerufen wird.
tradnr ist ausgefüllt. Eine Zeile drunter lade ich auch oxaddress und erweitere auch diese. Hier klappt die Speicherung sofort. Im Prinzip ist es das selbe nur das ich mir die Klasse oxuser nicht davor lade, weil diese ja schon existiert
Passt denn der Datentyp des Feldes zum Inhalt? (nicht dass da tinyint oder binary erwartet wird, aber ein string ankommt)
Aber sonst sieht für mich alles richtig aus.
Versuch mal bitte sowas hier:
if ($tradenr) {
die("läuft!");
$this->oxuser__extend_tradnr = new oxField("hardcoded test", oxField::T_RAW);
}
wenn die() greift, weißt du sicher, dass es $tradenr gibt, dann die() auskommentieren und nochmal mit einem hardcoded Wert statt $tradenr versuchen
Passt denn der Datentyp des Feldes zum Inhalt?
ja das Feld ist ein varchar(255)
wenn die() greift, weißt du sicher, dass es $tradenr gibt, dann die() auskommentieren und nochmal mit einem hardcoded Wert statt $tradenr versuchen
“läuft!” kommt aber beim rausnehmen kommt immer noch kein Eintrag in die db
Kann es sein das ich das neue oxuser feld irgendwo erst noch bekannt machen muss?
Wenn ich z.B. oxustid beschreibe klappt es sofort…
Hier einmal mein query zum anlegen das Datenbankfeldes. Vielleicht ist das ja auch das Problem :-/
ALTER TABLE oxuser ADD extend_tradnr VARCHAR(255) NOT NULL;
Welche Shop Version hast du? Dann versuche ich es nachzubauen
Welche Shop Version hast du?
CE 4.10.2
(Text Müll wegen Forumsmeldung (The message you have entered is too short. Please lengthen your message to at least 10 characters.)
nimm mal oxField::T_RAW raus, dann klappts.
Ich weiß aber nicht, warum.
Und es ist richtig, dass es keine View für User gibt, sie sind ja nicht multilingual.
Ich dachte nur zwischendurch, dass es um Artikel ging, daher meine Verwirrung.
nimm mal oxField::T_RAW raus, dann klappts.
Ich weiß aber nicht, warum.
hm hab ich auch probiert will aber nicht so recht. Hab es jetzt aber so gelöst das ich es direkt per oxDb::getDb()->execute($sSqlQuery); in die Datenbank schreibe.
Ich weiß nur nicht so recht wie ich den Paramter Escapen kann. Gibt es da etwas von oxid von Haus aus?