2010-11-26 47 views
3

J'ai quelques modèles écrits avec Smarty 3:bloc Smarty3 ajouter dans le modèle inclus

  1. Une page de mise en page
  2. Une page index
  3. Une inclut la page

layout.tpl:

{block "css"}{/block} 
{block "js"}{/block} 
{block "content"}{/block} 

index.tpl:

{extends "layout.tpl"} 
{block "content"} 
content text 
{include "include.tpl"} 
{/block} 

include.tpl

{block "js" append} 
include some extra js files for this included content 
{/block} 
include text 

Mais je suis une exception du compilateur:

Fatal error: Uncaught exception 'SmartyCompilerException' message « Erreur de syntaxe dans le modèle include.tpl {bloc « js "prepend" trop d'attributs sténographiques

L'ajout de bloc n'est-il pas disponible dans un modèle inclus, même s'il est inclus dans le modèle enfant?

Je pense que ce sera très utile si je peux utiliser l'ajout de bloc comme ceci, ou il pourrait y avoir d'autres façons de le faire? Merci!

Répondre

2

L'héritage de template de Smarty est traité avant même que l'analyseur ne connaisse votre {include}. Ainsi, il ne peut pas gérer {block} dans les modèles inclus. C'est-à-dire, à moins que le modèle inclus ne prolonge pas un autre modèle lui-même.