2015-10-07 2 views
1

Я использую систему магазинов, которая обновилась с smarty 2 до smarty 3, что привело к списку проблем на нашем сайте. Хуже всего то, что все переменные Smarty, которые мы назначили для использования в PHP, больше не работают.Назначить переменную Smarty PHP с помощью Smarty 3

короткий пример:

{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 странице я нашел несколько строк кода, которые делают то же самое, но выглядят немного отличается, пример этого:

$order = $smarty->getTemplateVars('test'); 

что приводит к:

FATAL ERROR(1): "Call to a member function getTemplateVars() on null" 

Ни один из всех этих «решений» я не нашел работу больше, так как Smarty 3.

+0

'get_template_vars()' устарел использовать 'getTemplateVars()' и убедиться, что перед этой строкой: '$ smarty-> getTemplateVars ('test')', который вы инициализировали свой объект smarty. –

+0

Тег 'php' также устарел в smarty3, вы должны использовать доступные возможности для расширения smarty, чтобы заменить использование' php'-блоков настраиваемыми блоками/функциями/... –

+0

Ваш второй метод должен работать с использованием $ умная переменная. Если возможно, попробуйте поставить глобальный $ smarty; перед вашим кодом. Однако ваш код плохой и очень устаревший, и его необходимо изменить с течением времени. В следующей версии smarty она, вероятно, вообще не работает. –

ответ

0

По каким-то причинам, ни одна из вещей выше работал. Я теперь передал код в {PHP} -tags во внешнем PHP-файле, а затем возвращаю функцию обратно в smarty.

Ниже я получил пример для тех, кто борется с ним (Не забудьте включить файл PHP в свой index.php или любой другой):

Я хочу, чтобы получить некоторую информацию о продукте из базы данных но есть только {$module_data.PRODUCTS_ID}, указанный в smarty.

Так что в моем файле, где я использую 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.

Смежные вопросы