2014-09-05 4 views
1

J'utilise smarty version 2.6.26 et d'après les docs en utilisant {include 'file.tpl' scope = 'global'} ou {include 'child_template.tpl' scope = parent} on devrait pouvoir accéder aux variables contenues dans le template enfant et les utiliser dans le template parent.passage (variable globale) d'un template smarty à un autre

comme un exemple que j'ai le code comme ci-dessous dans mon modèle d'enfant:

{capture assign="project_variable" name=project_data scope="global"} 
    my text data here... 
    {/capture} 

La variable {project_data de $} est disponible dans ce modèle maintenant

Dans mon modèle parent (tableau de bord) J'utilise :

{include 'child_template.tpl' scope=global} 

mais si j'essaie d'utiliser {$ project_data} dans le modèle parent, il est vide. donc il semble que la variable définie dans le modèle enfant est locale seulement?

selon la documentation à l'adresse: http://www.smarty.net/docs/en/language.function.include.tpl

« Vous pouvez utiliser toutes les variables à partir du modèle, y compris à l'intérieur du modèle inclus ».

Que manque-t-il ici? merci d'avance pour toute idée.

Répondre

1

Désolé, mais il semble que vous ne pouvez pas le faire dans Smarty2. J'ai essayé quelques moyens mais ça ne marche pas. Il n'y a aucune propriété scope dans Smarty3. Vous avez regardé la documentation de Smarty3 et vous devriez regarder documentation for Smarty2

+0

le document pour SMARTY2 semble le même: – Lookfar

+0

Mon erreur, cependant, le document SMARTY2 semble être le même: http: //www.smarty.net/docsv2/fr/language.function.include.tpl citation: "Cela signifie que vous pouvez utiliser toutes les variables du modèle inclus dans le modèle inclus". ou suis-je en train de mal interpréter? selon cette: http://www.smarty.net/forums/viewtopic.php?p=56673 on peut réutiliser la variable comme {$} smarty.capture.project_data pour SMARTY2, mais je ne l'ai pas été capable de faire fonctionner cela non plus. – Lookfar

+0

AHA! J'ai juste essayé le chemin d'accès complet au modèle: {include file = '/ home/nom d'utilisateur/public_html/mysite/custom_templates/child.tpl} et utilisé {$ smarty.capture.project_data} et cela a fonctionné :) – Lookfar

0

je faisais l'hypothèse que l'utilisation de {include file = « mytemplate.tpl »} trouverait le « fichier » mais il n'a pas fonctionné jusqu'à ce que je le plein chemin absolu tel que: {include file = '/ home/nom d'utilisateur/public_html/mysite/custom_template.tpl} et d'obtenir la variable en utilisant le format: {$ smarty.capture.myvariable_name} alors j'ai répondu à ma propre question, mais Marcin m'a mis sur la bonne voie alors merci pour ça!

J'ai parlé trop tôt. il semble que je ne peux saisir du texte statique et non un « {foreach} » boucle des idées très appréciées

Questions connexes