Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 08. Februar 2015 21:56

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

[GELÖST] FormBuilder zu ListIt2

Hallo zusammen,

habe gerade einen kleinen Hänger bei der Übertragung von Formular-Daten in das ListIt-Modul. Grundsätzlich klappt hiermit (http://www.i-do-this.com/blog/FormBuild … xtended/57) alles - hab ich auch schon ein paar mal gemacht.
Jetzt gibt es allerdings den Spezialfall, dass ich zwei Formular-Felder in ein ListIt-Feld eintragen möchte (je nachdem, welches ausgefüllt ist). Das Problem ist dabei, dass die Übertragung mit Hilfe des Aliases läuft (sowohl beim FormBuilder als auch bei ListIt). In dem UDT werden die Felder per "foreach" abgearbeitet - dort müsste ich nun eingreifen - habe aber keine Ahnung , wie.

[== PHP ==]
$obj->title = $params['id'];
 
foreach($params as $key => $value) {
    if(isset($obj->fielddefs[$key]))
        $obj->$key = $value;
}

Ich habe z.B. diese Felder:
Dropdown mit dem Alias "auswahl"
Textfeld mit dem Alias "sonstiges"
Trifft bei dem Dropdown keine Option zu, wird das Textfeld ausgefüllt. Aber beide Ergebnisse sollen nun in ListIt in einem Feld landen. Im Zweifel auch einfach nur das Textfeld, sobald etwas drin steht.

Ich hoffe, es ist halbwegs verständlich - ist schon spät ...
Bin für jeden Hinweis dankbar.

Offline

#2 08. Februar 2015 22:32

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.934
Webseite

Re: [GELÖST] FormBuilder zu ListIt2

Ich habe den Code auf der i-do-this Seite nicht angeschaut, aber eigentlich ist das einfach zu lösen:

$key ist der Feldname des Formular und im ListIt. Du kannst hier nun eine weitere if Abfrage einbauen:

foreach($params as $key => $value) {
    if(isset($obj->fielddefs[$key]) and $key = 'feldname')
        $obj->feldname = $value;
    else if(isset($obj->fielddefs['feldname']) and $key = 'feldname2')
        $obj->feldname = $value;
    else if(isset($obj->fielddefs[$key]))
        $obj->$key = $value;
}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 09. Februar 2015 11:22

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: [GELÖST] FormBuilder zu ListIt2

Hallo nockenfell,

danke für Deine schnelle Antwort. Ich habe das mal so übernommen, aber leider ohne Erfolg. Nach Anpassung der Feldnamen werden gar keine Daten mehr in ListIt übermittelt.
Ich habe noch etwas mit den Abfragen experimentiert, aber es nicht hinbekommen.

Aber ich glaube, ich habe jetzt eine gute Lösung daraus gezogen - ich werde die speziellen Felder alle einzeln übernehmen. So kann ich gezielt auf die Besonderheiten zugreifen - heute kam nämlich noch eine neue Anforderung hinzu, die ich so noch besser abfangen kann. Ist also in dem Fall wesentlich flexibler als ein rein automatisierter Ansatz:

[== PHP ==]
foreach($params as $key => $value) {
    if(isset($obj->fielddefs[$key]))
        $obj->$key = $value;
}

$obj->feldname = $params['feldname'];
if ($params['feldname2'] != '')
$obj->feldname = $params['feldname2'];

Erst werden alle Felder abgearbeitet und automatisch befüllt. Die speziellen Felder werden danach noch mal mit der entsprechenden Abfrage überschrieben.

Offline