Назначение переменной 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.

Другие вопросы по тегам