Neu if /elseif Anfrage wird nicht umgesetzt

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
199
8
Hi,

smarty nervt mich. Irgendwie wird eine stupide if/elseif Anweisung nicht umgesetzt

Code:
{if     {$variable} == 'voraussichtlich_lieferbar_ab'}    {${$variable}|date_format:"%d.%m.%Y"}
{elseif {$variable} == 'neues_artikeldatum'}              {${$variable}|date_format:"%d.%m.%Y"}
{else}
      {${$variable}}
{/if}

Sieht wie folgt aus:
Code:
Vorrausichtlich (wieder) Lieferbar ab:     24.05.2017
Neues Artikeldatum:     2017-01-19 00:00:00.000

Eigendlich sollten ja beide Felder nach Deutschen Format ausgegeben werden.
Aber nur das Feld was in der IF Anweisung steht wird beachtet.
Drehe ich es um (neue also "neues_artikeldatum" nach oben in den IF Bereich) dann bekomme ich die Ausgabe auch umgedreht. Sprich "wieder lieferbar ab" ist unformatiert (mit den vielen Nullen) und das neue Artikeldatum ist formatiert.
Die Feldnamen sind somit korrekt. Kann also nur was in der if/elseif liegen. 😡
Sieht einer den Fehler ?
 

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
199
8
Edit:
Code:
{if     {$variable} == 'voraussichtlich_lieferbar_ab' |or| {$variable} == 'neues_artikeldatum'}    {${$variable}|date_format:"%d.%m.%Y"}
So hab ich es erstmal behoben. (das |or| nur in or. Das Forum zickt sonst rum und lässt mich nicht speichern)

Aber dennoch würde ich doch gern mal wissen, wo samrty hier n Problem hat
 

fibergirl

Sehr aktives Mitglied
14. April 2016
833
266
Wenn ich es richtig verstanden habe, steht in {$variable} der Name der (Datums-)Variable, die es auszugeben gilt.

Also {$variable} gibt den Namen aus, {${$variable}} den Wert der Variablen (d.h. ein Datum), deren Name in {$variable} steht.

Ich kann aber nicht beurteilen, ob das so klappt, fange erst an mit Smarty.
 

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
199
8

fav-hosting.online

Sehr aktives Mitglied
16. Oktober 2012
781
60
Weiterstadt
Firma
FaV-Hosting
Ich kann dir leider nicht folgen aber {${$variable}|date_format:"%d.%m.%Y"} wird nicht funktionieren.
In if/else Anweisungen brauchst du die geschweiften Klammern nicht.
Also statt {if {$variable} == 'voraussichtlich_lieferbar_ab'} bitte nur {if $variable == 'voraussichtlich_lieferbar_ab'} verwenden.
{$variable | date_format:"%d.%m.%Y"} wäre die richtige Syntax für das Datum.

Du wirst ja denke ich 2 Variablen haben eine zur Prüfung und die andere die ein Datum/Zeitstempel enthält. Dann sollte das fertige Konstrukt wie folgt aussehen.

Code:
{if  $variableA == 'voraussichtlich_lieferbar_ab'}
{$variableB | date_format:"%d.%m.%Y"}
{elseif $variableA == 'neues_artikeldatum'}
          {$variableB | date_format:"%d.%m.%Y"}
{else}
      {$variableB}
{/if}

oder alternativ in kürzerer Form

Code:
{if  $variableA == 'voraussichtlich_lieferbar_ab' || $variableA == 'neues_artikeldatum'}
{$variableB | date_format:"%d.%m.%Y"}
{else}
      {$variableB}
{/if}
 
Zuletzt bearbeitet:

fibergirl

Sehr aktives Mitglied
14. April 2016
833
266
Wenn das so läuft wie in PHP, wäre vielleicht etwas in Richtung $$variable oder {$$variable} ein Ansatz?
 

Ähnliche Themen