Smarty 3,PHP 5.6,Windows Server 2012,IIS10
以下代码
$GLOBALS["smarty"]->assign("skin", "default");
$GLOBALS["smarty"]->assign("basePath", "/cart/");
$GLOBALS["smarty"]->assign("cssFiles", "{$basePath}{$skin}/product-page.css");
$GLOBALS["smarty"]->assign("cssFiles", "{eval $basePath}{eval $skin}/product-page.css");
$GLOBALS["smarty"]->assign("cssFiles", "{eval var=$basePath}{eval var=$skin}/product-page.css");
给出以下输出
Smarty_Variable Object
(
[value] => /product-page.css
[nocache] =>
)
Smarty_Variable Object
(
[value] => {eval }{eval }/product-page.css
[nocache] =>
)
Smarty_Variable Object
(
[value] => {eval var=}{eval var=}/product-page.css
[nocache] =>
)
目标是:
Smarty_Variable Object
(
[value] => /cart/default/product-page.css
[nocache] =>
)
我浏览了所有的文档,在谷歌上搜索了一个小时。我错过了什么?
时间已经够长了,我很惊讶没有人回答,所以,在互联网上找到信息的最快方法就是说一些不正确的话,我将用我的答案来回答我自己的问题,并希望我错了,几分钟内就会被纠正。
答:你想做的是不可能的。您必须将Smarty模板变量中的值转换为PHP变量,然后将它们重新插入,如下所示:
$bp = $GLOBALS["smarty"]->tpl_vars['basePath'];
$sk = $GLOBALS["smarty"]->tpl_vars['skin'];
$GLOBALS["smarty"]->append("cssFiles", $bp . "/" . $sk . "/product-page.css");