XML-RPC Problem mit Userfields

  • Aheu,


    ich versuche mich aktuell an der XML-RPC Schnittstelle. Das Beispiel aus der Doku habe ich soweit anpassen können, dass erfolgreich eine neue Aufgabe erstellt wird. Nun sollen da aber auch noch direkt ein paar benutzerdefinierte Felder befüllt werden. Anhand eines anderen Beitrags hier im Forum habe ich dazu zumindest einen Ansatz. Leider erhalte ich aber eine Fehlermeldung aus der RPC-Bibliothek

    Zitat

    Notice: Undefined offset: 0 in ..\lib\xmlrpc.inc on line 3017


    Fatal error: Call to a member function serialize() on a non-object in ..\lib\xmlrpc.inc on line 3017


    Hier mein Code:


    Werfe ich den Teil

    Code
    1. 'UserFields' => new xmlrpcval(
    2. array(
    3. 'DataType' => new xmlrpcval(0, 'i4'),
    4. 'FieldRef' => new xmlrpcval(5, 'i4'),
    5. 'Value' => new xmlrpcval("Test")
    6. ),
    7. 'array'
    8. )


    raus, dann wird die Aufgabe erstellt.


    Viele Grüße,
    Kalle

  • Hallo,
    wenn du mit PHP arbeitest, dann empfehle ich unsere GREYHOUND PHP API - dort musst du dich um die technischen Details der Übertragung nicht kümmern und arbeitest direkt mit Objekten. Für die RPC Schnittstelle ist dann der RPC Teil der PHP API zuständig.


    Die PHP API selbst wird übrigens mit GREYHOUND ausgeliefert. Nach der Installation des Clients liegt diese in "C:\Programme (x86)\GREYHOUND\Libraries\php".

  • Hallo,


    ich habe die PHP API installiert stehe aber bzgl. der benutzerdefinierten Felder irgendwie auf dem Schlauch. Die Beispiele helfen da auch nicht weiter.
    Kann ich eine Aufgabe erstellen und direkt bei der Erstellung mit

    Code
    1. $call->UserFields = und hier kommt was hin?


    die benutzerdefinierten Felder überhaupt befüllen, oder muss ich erst die Aufgabe erstellen, mir die dann nochmal holen und dann die Felder ändern?
    Wenn ja, wie geht das?


    Viele Grüße,
    Kalle

  • Benutzerdefinierte Felder kannst du bei der Erzeugung eines Elements bereits mit angeben. Diese müssen allerdings als entsprechendes Objekt angegeben werden. Die ID des benutzerdefinierten Felds kannst du z.B. über "Funktionen" > "ID Inspect" ermitteln. Das öffnet ein kleines Fenster, in das man quasi alle Objekte aus GREYHOUND hinein ziehen kann, und das dann deren ID anzeigt.


    Hier ein Beispiel für das Anlegen eines Elements inkl. benutzerdefiniertem Feld:


    Den Namen und Typ des benutzerdefinierten Felds kann man hier weglassen, da die ja bereits über die ID im Server bekannt sind. Der Wert wird immer als String angegeben und dann im Server in den entsprechenden Datentyp umgewandelt. Das ist notwendig, da die benutzerdefinierten Felder ja unterschiedliche Typen haben können, die RPC Schnittstelle aber einen festen Datentyp für den Wert braucht.


    Die Priorität des Elements wird hier übrigens explizit auf "Normal" gesetzt, da sonst das Element die niedrigste Priorität erhalten würde. Alle Felder, die nicht angegeben werden, werden als leer oder 0 betrachtet. Und 0 ist der Wert der Konstanten für die niedrigste Priorität. ;)