SortablePage gibt die ObjectList nur protected weiter

  • Irgendwie verstehe ich gerade nicht, warum eine ACP-ListPage die Ausgabe der geladenen Objecte aus der Datenbank in dem Array nur als data:protected herausgibt? Wie bekomme ich denn bitte die Daten dann in meinem Template ausgegeben?

    HIer mal das Array, welches die Objekte geladen hat:

    Display Spoiler

    ] => wcf\data\sar\system\SARSystem
    [decoratorClassName] =>
    [objectClassName] =>
    [objects] => Array
    (
    [1] => wcf\data\sar\system\SARSystem Object
    (
    [data:protected] => Array
    (
    [systemID] => 1
    [systemName] => Test
    )

    [systemName] =>
    [systemID] => 0
    )

    [2] => wcf\data\sar\system\SARSystem Object
    (
    [data:protected] => Array
    (
    [systemID] => 2
    [systemName] => Statnon
    )

    [systemName] =>
    [systemID] => 0
    )

    [3] => wcf\data\sar\system\SARSystem Object
    (
    [data:protected] => Array
    (
    [systemID] => 3
    [systemName] => stanton
    )

    [systemName] =>
    [systemID] => 0
    )

    [4] => wcf\data\sar\system\SARSystem Object
    (
    [data:protected] => Array
    (
    [systemID] => 4
    [systemName] => Mybaum
    )

    [systemName] =>
    [systemID] => 0
    )

    )

    [objectIDs] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    [sqlOffset] => 0
    [sqlLimit] => 20
    [sqlOrderBy] => systemName DESC, sar_system.systemID DESC
    [sqlSelects] =>
    [sqlConditionJoins] =>
    [sqlJoins] =>
    [useQualifiedShorthand] => 1
    [conditionBuilder:protected] => wcf\system\database\util\PreparedStatementConditionBuilder Object
    (
    [addWhereKeyword:protected] => 1
    [concat:protected] => AND
    [conditions:protected] =>
    [parameters:protected] => Array
    (
    )

    )

    [index:protected] => 0
    [indexToObject:protected] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    wenn ich dann im Template folgende Foreach-Schleife habe:

    Bekomme ich logischerweise nur 4 "0" in der Tabelle angezeigt. Auf die Protected Data, da wo die korrekten Daten enthalten sind, komme ich ja nicht heran. Aber warum befüllt mir das WSC das array im Protected mit den korrekten Daten und im zugängilchen Bereich steht "NULL" oder "0"? Warum?

    Wo habe ich denn da einen Fehler eingebaut?

  • Ich habe eine data-Klasse List

    Code
    class SARSystemList extends DatabaseObjectList
    {
            /**
             * @inheritDoc
             */
            public $className = SARSystem::class;
    }

    die dann auf die SARSystem-Klasse zugreift:

    Und die List-Page sieht so aus:

    Die Objekte kommen über die SortablePage von der Multilink-Page...


    Mein Template - Code steht ja oben.

    Komischerweise sind die anderen Klassen im ACP genauso, aber die haben nur den Protected-Teil im Array und greifen auch darauf zu. Warum habe ich denn noch neben dem Protected-Teil zusätzlich noch die einzelnen "systemName" und "SystemID" im Array?

  • Trägt nicht zum Thema bei, aber eigentlich müsste bei dir alles explodieren, wenn du das ausführst

    Deine Aussage hilft mir ja jetzt so gar nicht weiter... Könntest du mir das mal erklären bitte... Warum müsste bei mir alles "explodieren"?


    Eine Antwort mit:

    An dieser Stelle hast du "XXXXX" gemacht und das sollte aber so besser sein "YYYYYY" würde mir sicherlich mehr helfen.

  • Komischerweise sind die anderen Klassen im ACP genauso, aber die haben nur den Protected-Teil im Array und greifen auch darauf zu. Warum habe ich denn noch neben dem Protected-Teil zusätzlich noch die einzelnen "systemName" und "SystemID" im Array?

    Weil du in deiner Klasse SARSystem unnötigerweise systemName und SystemID (offensichtlich deine Datenbankfelder) definiert hast. Das notwendige Handling übernimmt aber bereits DatabaseObject, weshalb du die beiden Definitionen entfernen musst. Du greifst sonst im Template genau auf diese beiden Variablen zu, anstelle des gewünschten data-arrays.

    Und was SoftCreatR meint: Ersetze bitte das § durch ein $.

    Darüber hinaus solltest du dich nochmal mit der DatabaseObject-Klasse beschäftigen, ich vermute, du willst auch in den Funkionen, die du in deiner SARSystem-Klasse hast, eigentlich auf die Datenbankfelder zugreifen. Dann brauchen diese beide Funktionen KEINE Parameter.

    VG

    Fr33chen

  • Vielen Dank Fr33chen . Jetzt kann ich mit der Antwort auch was anfangen. Das eine Zeichen ist korrigiert. Die Definitionen habe ich entfernt. Darauf wäre ich nie gekommen.

    Ich werde mir mal die DatabaseObject-Klasse anschauen. ;)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!