Guten Tag,
nachdem hier mal geschrieben worden ist, dass man die *Editor-Klassen vermeiden soll, da die ohnehin beim Instanzieren der *Action-Klassen aufgerufen werden, versuche ich nun zu verstehen, wie man letztere korrekt Instanziert. Dabei geht es mir darum, dass ich ein Objekt, das bereits in die Datenbank eingetragen ist zu ändern. Also habe ich mir zuerst einmal das Objekt an sich ausgeben lassen und bin dann immer einen Schritt weiter, bis ich letztendlich dort angekommen bin, wo ich hin wollte. So bin ich letztendlich an $eventObj->ovjectAction geblieben, darin möchte ich die returnValues verändern, die ich mit dem Aufruf von $eventObj->objectAction->getReturnValues() auch ausgegeben bekomme.
Spoiler anzeigen
object(wcf\data\infraction\warning\InfractionWarningAction)#242 (12) {
["className":protected]=> string(51) "wcf\data\infraction\warning\InfractionWarningEditor"
["permissionsDelete":protected]=> array(1) { [0]=> string(38) "admin.user.infraction.canManageWarning" }
["permissionsUpdate":protected]=> array(1) { [0]=> string(38) "admin.user.infraction.canManageWarning" }
["requireACP":protected]=> array(2) { [0]=> string(6) "delete" [1]=> string(6) "update" }
["action":protected]=> string(6) "create"
["objectIDs":protected]=> array(0) { }
["objects":protected]=> array(0) { }
["parameters":protected]=> array(1) { ["data"]=> array(3) {
["title"]=> string(1) "1"
["points"]=> int(2)
["expires"]=> int(0)
} }
["permissionsCreate":protected]=> array(0) { }
["resetCache":protected]=> array(5) {
[0]=> string(6) "create"
[1]=> string(6) "delete"
[2]=> string(6) "toggle"
[3]=> string(6) "update"
[4]=> string(14) "updatePosition"
}
["returnValues":protected]=> object(wcf\data\infraction\warning\InfractionWarning)#245 (1) { ["data":protected]=> array(6) {
["warningID"]=> string(2) "14"
["title"]=> string(1) "1"
["points"]=> string(1) "2"
["expires"]=> string(1) "0"
["additionalMessage"]=> string(0) ""
["additionalMessageColor"]=> string(0) ""
} }
["allowGuestAccess":protected]=> array(0) { }
}
Alles anzeigen
Dannach habe ich mir die AbstractDatabaseObjectAction::__construct() angesehen um zu schauen, wie man eine Action-Klasse korrekt Instanziert. Allerdings scheine ich das falsch zu verstehen. Folgendermaßen habe ich versucht, die returnValues zu updaten.
$parameters = $eventObj->objectAction->getReturnValues();
$data = array(
'additionalMessage' => $this->additionalMessage,
'additionalMessageColor' => $this->additionalMessageColor
);
$warningAction = new InfractionWarningAction(array($parameters['returnValues']), 'update', array($data));
$warningAction->validateAction();
$warningAction->executeAction();
Und dessen Ergebnis
Spoiler anzeigen
object(wcf\data\infraction\warning\InfractionWarningAction)#243 (12) {
["className":protected]=> string(51) "wcf\data\infraction\warning\InfractionWarningEditor"
["permissionsDelete":protected]=> array(1) { [0]=> string(38) "admin.user.infraction.canManageWarning" }
["permissionsUpdate":protected]=> array(1) { [0]=> string(38) "admin.user.infraction.canManageWarning" }
["requireACP":protected]=> array(2) { [0]=> string(6) "delete" [1]=> string(6) "update" }
["action":protected]=> string(6) "update"
["objectIDs":protected]=> array(1) { [0]=> string(2) "16" }
["objects":protected]=> array(1) { [0]=> object(wcf\data\infraction\warning\InfractionWarningEditor)#247 (2) {
["object":protected]=> object(wcf\data\infraction\warning\InfractionWarning)#245 (1) { ["data":protected]=> array(6) {
["warningID"]=> string(2) "16"
["title"]=> string(1) "1"
["points"]=> string(1) "2"
["expires"]=> string(1) "0"
["additionalMessage"]=> string(0) ""
["additionalMessageColor"]=> string(0) ""
} }
["data":protected]=> NULL
} }
["parameters":protected]=> array(1) { [0]=> array(2) {
["additionalMessage"]=> string(1) "3"
["additionalMessageColor"]=> string(19) "rgba(89, 30, 30, 0)"
} }
["permissionsCreate":protected]=> array(0) { }
["resetCache":protected]=> array(5) {
[0]=> string(6) "create"
[1]=> string(6) "delete"
[2]=> string(6) "toggle"
[3]=> string(6) "update"
[4]=> string(14) "updatePosition"
}
["returnValues":protected]=> NULL
["allowGuestAccess":protected]=> array(0) { }
}
Alles anzeigen
Jetzt sind zwar alle vorhandenen Daten im var_dump enthalten, allerdings sind die parameter an falscher Stelle. Kann mir jemand helfen zu verstehen, wie man die Action-Klassen korrekt instanziert und welche Daten dafür wichtig und richtig sind?