Wert eigener Benutzerfelder lesen/schreiben

  • Hallo,


    ich habe im Backend unter "User-> field" ein eigenes Nutzerfelder angelegt.


    Dieses eigene Feld möchte ich von PHP aus beschreiben und den Initialwert ändern.


    FieldID bekomme ich mit der Funktion:


    Code
    1. function GetFieldID($Alias){ $db = JFactory::getDBO(); $db->setQuery($db->getQuery(true) ->select('id') ->from('#__fields') ->where("context = 'com_users.user'")->where("name='".$Alias."'")); return $db->loadResult();}


    wobei $Alias der Name meines Feldes ist. Den Wert von meinem Benutzerfeld kann ich auslesen mit


    Code
    1. function GetField($UserID, $FieldID)
    2. {
    3. $db = JFactory::getDBO();
    4. $db->setQuery($db->getQuery(true)
    5. ->select('value')
    6. ->from('#__fields_values')
    7. ->where("field_id = $FieldID")->where("item_id=$UserID"));
    8. return $db->loadResult();
    9. }


    Quelle: https://joomla.stackexchange.c…alue-of-custom-user-field


    Im o.g. Link wird mit $model->setFieldValue der Wert gesetzt.


    Aber das klappt bei mir nicht und ich bekommen den Wert nicht gesetzt.


    Und leider habe ich bis jetzt keinen passenden Beispielcode oder API gefunden die mir weiterhilft, den Wert bei eigenen Benutzerfelder zu setzen.


    Wenn mir jemand weiterhelfen könnte wäre ich sehr dankbar.


    Beste Grüße Martin

  • Im o.g. Link wird mit $model->setFieldValue der Wert gesetzt.


    Zeig halt besser deine Zeilen, die $model betreffen.


    Hat der das Script ausführende User die Rechte das Feld zu editieren? function setFieldValue(...) stirbt nämlich ohne Fehlermeldung, gibt allerdings ein false zurück, falls deswegen abgeblockt.


    Hast "Fehler berichten" auf "Maximum"?


    Mal administrator/components/com_fields/models/field.php::setFieldValue(...) schrittweise debuggen.

  • Hallo,


    das eigene Feld hat "Permissions, Public, Edit, Allowed". Müsste eigentlich von den Rechten passen. Zudem ist das Feld ein einfachter String ohne Maximum Length Einschränkung.


    Mein letzter erfolgloser Stand ist den Wert zu setzen ist:



    wirft einen Fehler: Call to a member function setFieldValue() on boolean


    Gruß Martin

  • Danke für die Rückmeldung.


    Ich habe Deine o.g. Zeilen benutzt. Danach wurde Class 'FieldsHelper' not found beklagt.


    Dem habe ich mit JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); abgeholfen.


    Der folgende Code



    läuft ohne Meldung durch, aber leider wird der Wert im Benutzerfeld nicht geändert. Irgendwas scheint noch zu fehlen. Aber was??


    Besten Dank für Antworten!!!

  • So die obige Zeile 37. von


    $model->setFieldValue(1, $userid , "mein neuer Wert");


    zu


    $model->setFieldValue($fieldID, $userid , "mein neuer Wert");


    geändert und Wert wurde geändert.


    Was jetzt noch komisch ist. Wenn ich mich in Backend einlogge und mir den User auf den o.g. Code gelaufen ist, steht immer noch der "Default Wert" in der Mask.
    Aber lese ich das Feld wieder über PHP aus, wird der neue Wert angezeigt.