Использование переменной smarty в тегах {php} - PullRequest
3 голосов
/ 12 января 2012

Очень простой вопрос, возможно ли использовать smarty var внутри тегов {php} {/ php}. Я знаю, что это устарело, бессмысленно, не рекомендуется и т. Д., Но, пожалуйста, я ищу простой патч!

Что-то вроде

{php} 

 $result = mysql_query("SELECT value FROM table WHERE fieldid = 9 AND relid = {MYSMARTYVAR}");

{/php}

Спасибо!

Обновление: я пробовал следующие методы.

1-$var = $this->get_template_vars('smarty_var');
2-$var = $smarty->getTemplateVars('smarty_var');
3-$var = $this->_tpl_vars['smarty_var'];

Все дают мне фатальные ошибки, $ это, когда не в контексте объекта и т. Д. Я нахожусь в среде WHMCS, если это объясняет, почему, возможно, некоторые вещи заблокированы или отключены?

Обновление 2; нашел решение более простое, чем казалось, чувствую себя глупо $ var = "{$ mysmartyvar}";

Спасибо всем!

Ответы [ 6 ]

5 голосов
/ 12 января 2012

Используйте $this->get_template_vars('smarty_var'), чтобы получить переменную Smarty.

 $result = mysql_query("SELECT value FROM table WHERE fieldid = '9' AND relid = '" . $this->get_template_vars('smarty_var') . "'");
2 голосов
/ 18 апреля 2013
 {php}
 $var = $template->get_template_vars('...')
 {/php}
1 голос
/ 20 октября 2016

Ответ от ОП.Это может быть полезно для других.

Это очень просто.

$var= "{$mysmartyvar}";

Это работает для меня.

0 голосов
/ 11 июля 2015
$myValue = $template->getVariable('myVariable')->value;
0 голосов
/ 12 января 2012

Попробуйте использовать "global"

{php}
global $smarty_object;
$var = $smarty_object->get_template_vars('whatever');
{/php}
0 голосов
/ 12 января 2012

Да, все переменные хранятся в $this->_tpl_vars, поэтому должно выглядеть так:

{php} 

 $result = mysql_query("SELECT value FROM table WHERE fieldid = 9 AND relid = {$this->_tpl_vars['MYSMARTYVAR']}");

{/php}
...