[IF Bedingunge] xxx [ELSE] xxx [ENDIF]

Headymaster

Erfahrenes Mitglied
Hallo würde gerne folgende Möglichkeit in meine Template-Klasse einbauen.

[IF Bedingung] xxx [ELSE] xxx [ENDIF]

Momentan habe ich schon eine Methode die definierte Platzhalter durch den gesetzten Wert ersetzt.

Und nun möchte ich aucgh eine Methode anbieten, die z.b. IF-Then-Else Abfragen bewerkstelligt.

Z.b. sollte es so sein, dass ich eine Variable definiert habe die Name heißt und den Wert Niels hat.

So wenn ich in meinem TPL nun [Name] eingebe wird dieser Platzhalter durch Niels ersetzt.

So aber da solche Variablen ja auch leer sein können möchte ich dies nun so umbauen.

[IF Name] Hallo [Name]. [ELSE] Hallo unbekannter. [ENDIF]

Vielleicht versteht ihr ja was ich meine :)

Hoffe jmd. hat nen Tipp wie man sowas bewerkstelligen kann :)

MFG Niels
 
Also du willst einfach, dass Leute, die keinen Namen eintippen mit "Unbekannter" begrüßt werden?

Ich würde es so machen (kann PHP nicht wirklich, wenn es falsch ist bitte nicht bös sein):

PHP:
if ($name == "")
	{
	echo "Hallo Unbekannter!";
	}
else
	{
	echo "Hallo $name";
	}

mfg
monoblock
 
Mir ist schon kalr wie man sowas unterscheidet ;-)

Nein ich möchte ja, dass meine Template Klasse If-Blöcke mit einbauen kann und diesen IF-Blöcken Bedigungen übergeben werden können.

Sowas sollte man bei einem großen Projekt nämlich besser im TPL machen und nicht in der Datenlogik.....

Das mit dem begrüßen war nur ein Beispiel um es hier verständlich zu erklären :)

MFG Niels
 
so hab ich es mal gebastelt...
Der Pseudocode im Template sieht dann soaus...

[if:"Wert1"<"Wert2"|Wert-Dann|Wert-Sonst]
[if:"Wert1">"Wert2"|Wert-Dann|Wert-Sonst]
[if:"Wert1"!="Wert2"|Wert-Dann|Wert-Sonst]
[if:"Wert1"<="Wert2"|Wert-Dann|Wert-Sonst]
[if:"Wert1">="Wert2"|Wert-Dann|Wert-Sonst]
[if:"Wert1"%"Wert2"|Wert-Dann|Wert-Sonst]

Von der Bedeutung her: [WENN:"WERT1"..."WERT2"|DANN|SONST]

Und hier der Quelltext der dies auswertet.
PHP:
        $regex = "/\[if:\"(.*?)\"(\<|\>|\!\=|\=\=|\<\=|\>\=|\%)\"(.*?)\"\|(.*?)\|(.*?)\]/is";
        while(preg_match($regex, $template, $x))
        {
            switch($x[2])
            {
                case ">":
                ($x[1]>$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case "<":
                ($x[1]<$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case "==":
                ($x[1]==$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case "!=":
                ($x[1]!=$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case "<=":
                ($x[1]<=$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case ">=":
                ($x[1]>=$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                break;
                case "%":
                 ($x[1]%$x[3]) ? ($this->setOne($x[0], $x[4])) : ($this->setOne($x[0], $x[5]));
                 break;
             }
     }

function setOne($feld, $ersatz)
->  $string=str_replace($feld, $ersatz, $string);
Womöglich hilft dir das weiter...
Falls dir eine elegantere Lösung oder umfangreichere einfällt setzt sie doch bitte online...
 
Genau sowas is das was ich gesucht habe :)

Aber habe mir nun mal Smarty installiert und schau mir das ma an wie mir das gefällt :)

Bei mir is ja nur wichtig, dass ich das ganze kommerziell nutzen kann...sprich das es dafr auch freigegeben is....naja smarty is das ja und dann ma schaun wie das is :)

MFG Niels

Trotzdem tix :)
 
Zurück