在另一个变量的assign语句中使用Smarty变量。

问题描述 投票:0回答:1

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] => 
)

我看遍了所有的文档,在谷歌搜索了一个小时。我缺少什么?

php smarty
1个回答
0
投票

已经很久了,竟然没有人回答,本着在网上找资料最快的方法就是说错话的想法,我就用我自己的问题作为答案来回答,希望我错了,能在几分钟内得到纠正。

回答:你想做的事情是不可能的。你必须把Smarty模板变量中的值弄出来,变成PHP变量,然后再插回去,像这样。

$bp = $GLOBALS["smarty"]->tpl_vars['basePath'];
$sk = $GLOBALS["smarty"]->tpl_vars['skin'];
$GLOBALS["smarty"]->append("cssFiles", $bp . "/" . $sk . "/product-page.css");
© www.soinside.com 2019 - 2024. All rights reserved.