Назначение переменной Smarty для PHP с помощью Smarty 3
Я использую систему магазинов, которая была обновлена с smarty 2 до smarty 3, что привело к появлению списка проблем на нашем сайте. Хуже всего то, что все переменные Smarty, которые мы назначили для их использования в PHP, больше не работают.
Краткий пример:
{assign var=test value=$ORDER_NUMBER}
{php}
$order = $this->get_template_vars('test');
echo $order;
{/php}
Это приводит к следующей ошибке:
FATAL ERROR(1): "Using $this when not in object context"
Теперь на Smarty Page я нашел несколько строк кода, которые делают то же самое, но выглядят немного по-другому, например, эта:
$order = $smarty->getTemplateVars('test');
что приводит к:
FATAL ERROR(1): "Call to a member function getTemplateVars() on null"
Ни одно из этих "решений", которые я нашел, больше не работает с Smarty 3.
1 ответ
По какой-то причине ничего из вышеперечисленного не сработало. Я теперь передал код в тегах {PHP} во внешний файл PHP и затем вернул функцию обратно в smarty.
Ниже я привел пример для любого, кто борется с этим (не забудьте включить ваш файл PHP в ваш index.php или что-то еще):
Я хочу получить некоторую информацию о продукте из базы данных, но имею только {$module_data.PRODUCTS_ID}
дано в умнице.
Поэтому в моем файле, где я использую тег smarty, я отправляю эту переменную в свою функцию на PHP: {$module_data.PRODUCTS_ID|@get_random_function}
Затем в моем внешнем файле PHP я делаю свою функцию PHP и возвращаю нужные мне данные:
function get_random_function($products_id)
{
$t_sql = $sql = "SELECT * FROM products WHERE products_id='".$products_id."'";
$retval = mysql_query($t_sql);
$row = mysql_fetch_assoc($retval);
return $row['gm_needed_data'];
}
Сейчас {$module_data.PRODUCTS_ID|@get_random_function}
выводит мне возвращение моей функции PHP.