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

#1 22. November 2014 13:11

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

[GELÖST] Semikolon im value bei assign

Hallo,

bin gerade dabei, eine Seite von 1.10.3 auf 1.11.11 zu aktualisieren. Wenn mich nicht alles täuscht, wurde ja hier von Smarty 2 auf Smarty 3 aktualisiert - das führt allerdings wohl bei einigen Tags zu Problemen.
In erster Linie geht es um folgendes Konstrukt - das Semikolon wird schlicht nicht akzeptiert:

[== Smarty ==]
{assign var=name value=$value1;$value2;$value3}

Da ich die Seite übernommen habe, musste ich erst mal herausfinden, was das überhaupt bedeutet. Offensichtlich werden die Inhalte der jeweiligen values durch ";" getrennt ausgegeben.
Was wäre da die aktuelle Entsprechung? Wenn ich die Werte mit |cat: aneinander reihe, kommt nicht 100% das selbe Ergebnis raus und in den Smarty-Hilfen konnte ich auch nichts wirklich passendes finden.

Offline

#2 23. November 2014 07:16

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Semikolon im value bei assign

jeff1980 schrieb:

Wenn ich die Werte mit |cat: aneinander reihe, kommt nicht 100% das selbe Ergebnis raus und in den Smarty-Hilfen konnte ich auch nichts wirklich passendes finden.

Bißl mystisch wink - was sind denn die value... Werte und was soll als name dabei heraus kommen?

Offline

#3 23. November 2014 09:14

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Semikolon im value bei assign

Was sollen die Semicolons bewirken? Soll da ein Array draus entstehen?

{$array = [$value1,$value2,$value3]}

oder sollen die Werte mit Semicolon getrennt aneinander gereiht werden?

[== Smarty ==]
{assign var=name value="`$value1`;`$value2`;`$value3`"}

(Beide Codes ungetestet)


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

Offline

#4 23. November 2014 09:49

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

Re: [GELÖST] Semikolon im value bei assign

Hi,

wenn ich mir den Inhalt von "name" anschaue, werden die "values", die jeweils normale Inhaltsblöcke enthalten, einfach nacheinander ausgegeben. Es ist also eher die zweite Variante. Komisch ist nur, warum es mit "cat" nicht funktioniert, da dies ja im Prinzip auch nur aneinander reiht.
Ich werd da morgen noch mal schauen und die andere Schreibweise von nockenfell testen. Es gibt auch noch ein paar andere Spezialitäten, die ich noch nicht ganz geblickt habe ... Ist immer blöd ohne Kontakt zum "Vorgänger" ...
Aber der Ansatz hilft auf jeden Fall schon mal weiter, da mir die Semikolons gar nichts sagten.

Offline

#5 23. November 2014 21:15

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Semikolon im value bei assign

Was wird denn mit der Variable $name gemacht?


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

Offline

#6 24. November 2014 08:45

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] Semikolon im value bei assign

Komisch ist nur, warum es mit "cat" nicht funktioniert

Wie sah denn Dein "cat-code" aus?
Meiner würde so aussehen (ungetestet):

{$name=$value1|cat:";"|cat:$value2|cat:";"|cat:$value3}

Aber wie nockenfell schon fragte: Wichtig ist, was mit der Variable am Ende gemacht werden soll.
Vielleicht gehts ja auch einfacher, wenn man die vor- bzw. nachgelagerten Prozesse mit einbezieht.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#7 24. November 2014 09:20

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

Re: [GELÖST] Semikolon im value bei assign

@NaN: Genau so sah es bei mir auch aus.

So langsam lichtet es sich bei mir aber auch. Die Variable $name wird nämlich noch mal durch einen benutzerdefinierten Tag geschickt - das habe ich heute erst gesehen, da es im jeweiligen Inhalt passiert und aus dem Template nicht ersichtlich ist.
Und genau da liegt das Problem - der UDT "bearbeitet" den Inhalt der Variablen noch mal und entfernt bestimmten Code bzw. fügt welchen hinzu - konkret werden aus den einzelnen Inhaltsblöcken, die in $name stecken, mehrere Boxen (divs) generiert. Die Übergabe scheint durch die Schreibweise mit cat nicht mehr richtig zu klappen, weshalb die Ausgabe im Frontend falsch ist.
Aber hier funktioniert nun der Code von nockenfell:

[== Smarty ==]
{assign var=name value="`$value1`;`$value2`;`$value3`"}

Liegt wahrscheinlich an einer Änderung von Smarty 2 zu 3, oder?

Der Weg ist also folgender:
$name wird im Template mit dem Inhalt von Content-Blöcken gefüllt. Danach wird auf Seiten, in denen die Content-Blöcke gefüllt sind, $name manuell an einen UDT übergeben, der sich um die Ausgabe kümmert (unerwünschten Code entfernt, Neuen hinzufügt).

Letztendlich klappt mit der o.g. Schreibweise wieder alles, wie es soll :-).
Bin gespannt, was mich als nächstes erwartet ...

Offline