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");