Smarty: Template im Template (.tpl) Verständnisfrage

P4ddi

Grünschnabel
Hallo liebe Community,
Ich bin ein absoluter PHP-Anfänger und noch viel mehr ein Anfänger in der Smarty-Engine.
Folgendes Problem bereitet mir Probleme beim Verständnis und in der Umsetzung:
Ich habe ein Haupttemplate: index.php (page.tpl)
Soweit so gut, ausgeben und Platzhalter in der tpl Datei deklarieren stellt kein Problem dar.
Nun möchte ich aber beispielsweise einen Login in meiner index.php (page.tpl) ausgeben das ebenfalls eine login.php und ein zugehöriges Template hat (login.tpl).
Wie kann ich das realisieren ?

Ich habe ausschließlich folgene Funktion gefunden:
Code:
{include file="$tpl_name.tpl"}

Dieses bindet mir allerdings nur die Template-Datei ein, wo ist nun meine Verarbeitungslogik hin ? (login.php)

Vielleicht kennt jemand ein gutes Tutorial oder kann mir die logische Vorgehensweise erklären ?

Mit freundlichen Grüßen
Patrik
 
Erst einmal vielen Dank für deine Antwort !


Nun, Template-Engines haben ja gerade den Vorteil, Aussehen von Logik zu trennen. Du müsstest dann deine login.php

- entweder aufrufen oder
- in index.php includen

Ich verstehe es nicht ganz.
Ich habe jetzt meine Login.tpl eingebunden

Code:
<div id="footer">
	{include file='login.tpl'}
</div>

Jetzt möchte ich, das wenn der Benutzer auf einen Submit-Button klickt, die Login.php aufgerufen wird. Welche Datei rufe ich denn jetzt im Formular ("action") auf ? Ich möchte das der Anwender wieder in der Index.php landet. Vorher soll allerdings die Login.php aufgerufen werden und die Eingaben verarbeiten.

Ablauf:
Benutzer ist in der Index.php -> klickt auf den LogIn Button -> login.php verarbeitet Daten aus dem Formular -> Anwender landet wieder auf der index.php

Ich komme aus der ASP.NET Welt und denke vermutlich deswegen noch komplett falsch.

Mit freundlichen Güßen
 
Zuletzt bearbeitet:
Du könntest die index.php so aussehen lassen:

PHP:
// ...
if (isset($_POST['login']))
{
    include 'login.php';
}
//...

und die index.tpl so lassen wie du es hast.
 
Nein, du hast eine richtige Vorstellung davon. Genauso kann man es auch in PHP machen. In der login.php wird geprüft, ob der eingebene Benutzer existiert und sein Passwort mit dem eingegebenen übereinstimmt. Wenn ja, dann setzt man beispielsweise eine Session-Variable um und leidet mittels header()-Funktion zu einer anderen Seite um:

PHP:
if( isset($_POST['username']) )
{
  // Führe Benutzername/Passwort-Prüfung durch
  // Datenbank-Abfrage, Datei, oder was auch immer

 if ( $benutzername == true && $passwort == true )
 {
   $_SESSION['logged_in'] = 1;
    header("Location: index.php");
 }
}

So in etwa
 
Zurück