Использование переменной Smarty внутри оператора assign для другой переменной - PullRequest
0 голосов
/ 01 мая 2020

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

Я просмотрел все документы и искал в Google в течение часа. Чего мне не хватает?

1 Ответ

0 голосов
/ 02 мая 2020

Прошло достаточно много времени, и я удивлен, что никто не ответил, поэтому с идеей, что самый быстрый способ найти информацию о inte rnet - это сказать что-то неверное, я собираюсь ответить на свой вопрос с то, что я использовал в качестве ответа, и надеюсь, что я ошибаюсь и будет исправлен в течение нескольких минут.

Ответ: то, что вы пытаетесь сделать, невозможно. Вы должны получить значения из переменных шаблона Smarty в переменные PHP, а затем подключить их обратно, вот так:

$bp = $GLOBALS["smarty"]->tpl_vars['basePath'];
$sk = $GLOBALS["smarty"]->tpl_vars['skin'];
$GLOBALS["smarty"]->append("cssFiles", $bp . "/" . $sk . "/product-page.css");
...