首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smarty Template 3.1 ERROR:{block}标记中不允许变量模板文件名

Smarty Template 3.1 ERROR:{block}标记中不允许变量模板文件名
EN

Stack Overflow用户
提问于 2015-05-20 10:17:28
回答 1查看 1.2K关注 0票数 0

这些天来,我试图通过使用智能模板引擎及其OOP模板标记{block}来改进我的模板。

它工作得很好,但我也注意到当我使用{块}-标记时,{file=“.”当我使用嵌套变量时,variableX=".."}中断。

PHP致命错误:.。在{块}标记中不允许变量模板文件名

下面是一些例子:

工作(在“param”中没有嵌套变量)

代码语言:javascript
复制
{block name=CONTENT}
{assign "extra" value="test"}
DropDown: {include "dropdown.html" param="product_name" items=DS::PRODUCTS()}
{/block}

不工作#1 (使用的嵌套变量)

代码语言:javascript
复制
{block name=CONTENT}
{assign "extra" value="test"}
DropDown: {include "dropdown.html" param="product_name_`$extra`" items=DS::PRODUCTS()}
{/block}

不工作#2 (使用{}的嵌套变量)

代码语言:javascript
复制
{block name=CONTENT}
{assign "extra" value="test"}
DropDown: {include "dropdown.html" param="product_name_{$extra}" items=DS::PRODUCTS()}
{/block}

当我使用{include}而没有{block}时,所有示例都是可以的

问题:是否还有其他允许嵌套变量的方法,还是一个已知的问题?

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2015-05-22 22:49:33

简单的答案是--不要使用这种花哨的技巧。如果您真的没有办法绕过它,这可能意味着您的设计思想是有缺陷的,需要重新考虑,或者,如果是Smarty,您需要一个更长的继承链。

看看像这样的东西。

索引模板(index.tpl):

代码语言:javascript
复制
<html><head> 
 <title>{block 'page-title'}Silly title{/block}</title> 
 </head><body>{block 'page-content'}Silly content{/block}</body></html>

单篇文章内容(index-content.tpl):

代码语言:javascript
复制
{extends 'index.tpl'} 
 {block 'page-title'}{$title|escape}{/block} 
 {block 'page-content'}{$content|render}{/block}

list/分页的文章内容(list-content.tpl):

代码语言:javascript
复制
{extends 'list-index.tpl'} 
 {block 'page-title'}{$title|escape}{/block} 
 {block 'pager'}{somepaging}{/block} 
 {block 'list-content'}{somecontent}{/block}

从列表继承的包装器(list-index.tpl):

代码语言:javascript
复制
{extends 'index.tpl'} 
 {block 'page-content'} 
   {block 'pager'}[1] [2] [3]{/block} 
   {block 'list-content'}x{/block} 
   {block 'pager'}[1] [2] [3]{/block} 
 {/block}

当我呈现一篇简单的文章时,我调用index-content.tpl。当我需要一个寻呼列表时,我打电话给list-content.tpl。我从不直接调用任何基本模板。

但是,如果主题请求启用或禁用页面上的特定内容块,则始终可以将选择包装在{if}块中。但老实说,我会敦促你重新考虑你的基础设计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30346782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档