2011-01-15 6 views
3

hey, Depuis quelques semaines, j'essaie de programmer une application PHP avec la solution de template smarty. Maintenant, une question facile pour tous les professionnels: Comment puis-je obtenir un modèle dans un modèle? Un exemple: index.php (page.tpl) comprennent mon login.php (login.tpl)Modèle dans le modèle (.tpl) smarty

Dans la documentation Smarty j'ai trouvé cette fonction: {include file="$tpl_name.tpl"}

Mais où est mon login.php manette ? Lorsque cette fonction inclut le fichier login.tpl, je n'ai que du code HTML ou? Est-ce que quelqu'un peut m'expliquer ceci ou me donner un échantillon/un tutoriel?

Désolé pour mon mauvais anglais

meilleures salutations

+0

utilisez-vous un framework? – RobertPitt

Répondre

2

Fondamentalement, le fichier login.tpl dans votre cas doit être un modèle Smarty ordinaire (donc il peut contenir des balises html ainsi que des balises Smarty). Vous ne pouvez pas inclure un autre contrôleur de Smarty. Dans la mesure où je comprends, vous voulez ajouter une fonctionnalité de connexion à votre page d'index. Cela peut être fait de la façon suivante:
1) Inclure login.tpl à index.tpl, de sorte que vous aurez le formulaire de connexion inclus dans votre page d'index.
2) Spécifiez une action différente pour votre formulaire de connexion, par ex. "login.php", donc ce login.php serait votre contrôleur de connexion, qui gère toute la logique de connexion/déconnexion.
3) Une fois qu'un utilisateur s'est connecté avec succès, vous pouvez le rediriger vers index.php (ou n'importe quelle page que vous voulez).

Ainsi, vous aurez deux contrôleurs distincts: le contrôleur principal (responsable de la page d'index) et le contrôleur de connexion, responsable de la connexion/déconnexion. Le fichier login.tpl dans ce cas ne serait qu'un modèle contenant des balises html et probablement Smarty pour afficher le formulaire de connexion.

5

ce code est exactement ce que vous voulez. Il vous permettra d'inclure un autre modèle smarty dans un modèle.

<html> 
<head> 
    <title>{$title}</title> 
</head> 
<body> 
{include file='login.tpl'} 

Toutes les variables disponibles dans le modèle d'origine sont disponibles pour le modèle que vous venez d'inclure.

Je ne suis pas sûr de ce que vous dites au sujet seulement d'avoir le code HTML, peut-être vous vouloir cette fonction à la place:

{include_php file='/path/to/login.php'} 
Questions connexes