we:unsetVar

Fragen zum Erstellen von Templates für webEdition.
jpunktkpunktzwo
Junior Member
Beiträge: 27
Registriert: Mo 10. Okt 2016, 12:59

we:unsetVar

Beitragvon jpunktkpunktzwo » Mi 9. Nov 2016, 21:18

Es gibt die Tags
  • we:setVar
  • we:ifVar
  • we:ifNotVar
  • we:ifVarSet
  • we:ifNotVarSet
  • we:ifVarEmpty
  • we:ifVarNotEmpty
.

Fehlt konsequenterweise nicht noch ein we:unsetVar, welches in PHP dann ein richtiges unset(…) der Variable macht?

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

Re: we:unsetVar

Beitragvon mokraemer » So 13. Nov 2016, 01:49

eigentlich nicht. Keines der Tags soll ja nur eine Variable so modifizieren sondern Inhalte aus WE prüfen und ausgeben.
webEdition-Kern-Entwickler

AndreasWitt

Re: we:unsetVar

Beitragvon AndreasWitt » Di 15. Nov 2016, 19:55

... naja:

Code: Alles auswählen

<we:setVar/>


modifiziert schon eine Variable und ich hätte in der Vergangenheit das ein oder andere mal auch

Code: Alles auswählen

unset();
benötigt, denn

Code: Alles auswählen

<we:setVar to="global" nameto="myVar" value=""/>


ist eben nicht dasselbe wie

Code: Alles auswählen

unset($GLOBALS['myVar']);
Zudem stellt sich die Frage, ob mit der Einführung der Attribute 'to' und 'nameto' das <we:setVar/> nicht (fast) überflüssig machen. Denn mit

Code: Alles auswählen

<we:var to="global" nameto="myVar" value="" />


müsste ja eigentlich auch funktionieren. Zusätzlich könnte man dem zusammenfassenden we:Tag noch ein Attribute 'mode' ergänzen.

Code: Alles auswählen

<we:var type="global" name="myVar" mode="print | set | unset" />

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

Re: we:unsetVar

Beitragvon mokraemer » Mi 16. Nov 2016, 02:24

AndreasWitt hat geschrieben:... naja:
benötigt, denn

Code: Alles auswählen

<we:setVar to="global" nameto="myVar" value=""/>


ist eben nicht dasselbe wie

Code: Alles auswählen

unset($GLOBALS['myVar']);
Ist es nicht, muß es auch nicht sein. Das eine transferiert Daten aus WE in PHP. Der Rest ist dann deine Sache.
Zum einen macht es keinen Sinn für jede PHP-Funktion ein WE-Äquivalent zu schaffen, was war und ist nicht der Sinn von Tags. Zum anderen ist es kein guter Stil darauf zu prüfen ob eine Var gesetzt ist oder nicht, damit erübrigt sich das eigentlich schon.

we:setVar kann aber noch etwas mehr, nämlich Daten aus dem Request sicher für SQL-Vorbereiten und/oder den Datentyp richtig setzen.
webEdition-Kern-Entwickler

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:unsetVar

Beitragvon WBTMagnum » Mi 16. Nov 2016, 13:58

Ich kann der Idee von <we:unsetVar/> grundsätzlich schon etwas abgewinnen. Nutzt man zum Beispiel ein Array um Variable für die Ausgabe vorzubereiten, kann es in einer Listview schon Sinn machen das Array immer wieder zurückzusetzen, damit hier keine falschen Daten angezeigt werden. Momentan muss man das mit PHP machen.

Fragen die sich mir stellen:
  • Welche (potentiellen) Anwendungsfälle gibt es sonst noch?
  • Sind diese Anwendungsfälle Grund genug um <we:unsetVar/> einzuführen?
  • Welche Probleme könnten sich durch so ein Tag ergeben?
Liebe Grüße,
Sascha

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

Re: we:unsetVar

Beitragvon mokraemer » Mi 16. Nov 2016, 17:01

Das zurücksetzen kannst du ja mittels

Code: Alles auswählen

<we:setVar to="global" nameto="myVar" value=""/>
machen. Ein unset braucht es eigentlich nur, wenn man in einem Array ein Element löschen will. Da es in WE keine Arrays gibt die man ansprechen könnte macht das wenig Sinn.

Ich würde die folgenden Tags vollständig streichen:
we:ifVarSet
we:ifNotVarSet

Die Prüfung sollte nur auf Empty lauten. Das andere kommt noch aus Zeiten in denen WE leere Felder gespeichert hat. Mittlerweile werden aber leere Felder entfernt.
webEdition-Kern-Entwickler

jpunktkpunktzwo
Junior Member
Beiträge: 27
Registriert: Mo 10. Okt 2016, 12:59

My 0.02 $

Beitragvon jpunktkpunktzwo » Mi 16. Nov 2016, 17:04

empty() gehört zum Widerlichsten, was PHP so hat.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:unsetVar

Beitragvon WBTMagnum » Mi 16. Nov 2016, 17:51

Das es in wE keine Arrays gibt stimmt so aber nicht. Man kann ja mittels meinArray[] aus wE Tags Werte in ein Array schreiben (seit 6.3.7.0 / 6.3.8.0).

Liebe Grüße,
Sascha

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

Re: we:unsetVar

Beitragvon mokraemer » Do 17. Nov 2016, 13:39

empty() gehört zum Widerlichsten, was PHP so hat.
Das sehe ich anders. In Scriptsprachen sollte es ansich eben egal sein ob ein Wert gesetzt ist oder nicht. Wichtig ist eigentlich immer nur ob ein Wert vorhanden ist. In allen typisierten Sprachen (und da entwickelt sich PHP mit 7.0 auch mehr hin), ist es quasi Pflicht das ein Element da ist (lassen wir mal Arrays aus und vor). Und was die Standardprüfung dann ist, ist der Wert "gesetzt", also var!="" - oder null-sicher ""!= obj.var
Und genau das erfüllt nun empty - "isset" wird erst mit dem neuen Operator "??" wieder interessant.
Das es in wE keine Arrays gibt stimmt so aber nicht. Man kann ja mittels meinArray[] aus wE Tags Werte in ein Array schreiben (seit 6.3.7.0 / 6.3.8.0).
Doch, denn das ist nicht WE, sondern PHP. Du kannst kein WE-Element als Array anlegen und mit WE drauf zugreifen. Darum geht es hier doch. Wenn du Daten nach PHP als Array rausschreibst, dann willst du die Daten in PHP haben und dann solltest du sie da auch weiterverarbeiten.
webEdition-Kern-Entwickler


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

Wer ist online?

Mitglieder in diesem Forum: Semrush [Bot] und 21 Gäste