WE 9.0.6 / setElementS, setVar & Co - wie geht das denn nun

Fragen zum Erstellen von Templates für webEdition.
mediavantis
Senior Member
Beiträge: 238
Registriert: Do 16. Feb 2012, 12:51

WE 9.0.6 / setElementS, setVar & Co - wie geht das denn nun

Beitragvon mediavantis » Sa 16. Jan 2021, 14:34

Hallo zusammen,

beim Anlegen von Objekten und das Befüllen deren Felder über das Frontend (Formular) funtkioniert bekanntlich folgendes Konstrukt nicht mehr:

Code: Alles auswählen

<we:ifWritten type="object" formname="editcontact">
<?php
$obj_id = $we_object['editcontact']->ID; 
$obj = new we_contents_objectFile();
$obj->initById((int)$obj_id);
$obj->setElement('A_Land',$hbLand); //oder
$obj->setElement('A_Land',$GLOBALS['hbLand']);
$obj->we_save();
$obj->we_publish();
</we:ifWritten>
Leider funktionieren aber auch die seit WE 9 vorhandenen Schreibweisen:

Code: Alles auswählen

$obj->setElementS('A_Land',$hbLand);
$obj->setElementS('A_Land',$GLOBALS['hbLand']);
ebefalls nicht.

Nun habe ich versucht (ebenfalls die in der Versionshistorie) angeführten alternativen Methoden anzuwenden, wie z. B.:

Code: Alles auswählen

<we:setVar to="self" nameto="$A_Land" value="$hbLand"/>
<we:setVar to="self" nameto="$A_Stadt" value="$hbStadt"/>
und zwar sowohl vor dem

Code: Alles auswählen

<we:write type="object" classid="1" formname="editcontact" protected="true" onpredefinedname="overwrite" onduplicate="increment" publish="true" forceedit="true" onduplicatename="overwrite" />
als auch innerhalb des

Code: Alles auswählen

<we:ifWritten type="object" formname="editcontact">

</weIfWritten>
Auch die Schreibweise innerhalb von <?php ?>

Code: Alles auswählen

we_tag('setVar', ['to' => 'self', 'nameto' => $A_Land, 'value' =>$hbLand]);
führt nicht zum Erfolg.

Was mache ich hier falsch oder anders gefragt, was geht denn nun eigenlich noch mit der 9er Version???

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: WE 9.0.6 / setElementS, setVar & Co - wie geht das denn nun

Beitragvon NilSole » Sa 16. Jan 2021, 15:52

Hallo Ulrich,

Zu we:setVar
Mit we:setVar to self bearbeitest bzw setzt du Variablen im selben Dokument / Objekt. Ohne deinen Code genauer zu kennen könnte setVar to object eine Lösung sein (entsprechend vor we:write)...

Nameto in deiner Schreibweise würde nach der Variable $A_land suchen und dann im Variableninhalt speichern. Das ist in den Entwicklerinfos angegeben und kann auf den ersten Blick etwas verwirren.
Was du hier willst ist nameto='A_land'. Für Value möchtest du dann den Inhalt von $hbland haben. Hier solltest du aber noch ein Backslash vor das $ setzen.

Der Ansatz in PHP:
Hier wirst du vielleicht keinen Wert für die ID haben. Da müsstest du dir mal die einzelnen Variablen ausgeben lassen und dann wird das vielleicht klarer.

Schöne Grüße
Nils

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: WE 9.0.6 / setElementS, setVar & Co - wie geht das denn nun

Beitragvon mokraemer » So 17. Jan 2021, 13:20

ich denke auch, das diese Zeile nicht stimmt und vermutlich auch im Log als Fehler aufläuft:

Code: Alles auswählen

$obj_id = $we_object['editcontact']->ID; 
Wenn überhaupt müßte das $GLOBALS['editcontact'] sein. Dann stellt sich die Frage, wenn $GLOBALS['editcontact'] bereit ein we_contents_objectFile ist, warum man mit der ID noch mal eins erzeugt?!
Was nach we:write noch gibt (sollten wir aber auch ändern) ist $GLOBALS['we_object_write_ID'] - darin findet sich die ID des Dokuments/Objektes das geschrieben wurde - ist vermutlich aus Kompatibilität noch drin geblieben. Da wir von den ganzen globalen Vars wegwollen, wird das vermutlich als var auf we:write abgelegt.
webEdition-Kern-Entwickler


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 55 Gäste