@noteblock

Как сделать обновление переменных сессии «на лету»?

Добрый день.

Пишу модуль, в котором требуется хранить переменную в сессии.
Обновление переменной происходит по адресу вида: sitename.ru/updatevar/var_value (по этому адресу происходит присвоение переменной значения var_value)
Столкнулся с такой проблемой — значение обновляется только при повторном обновлении страницы.

Т.е. если переходить по следующим адресам и выводить значение переменной, вижу:
1) sitename.ru/updatevar/1 // ничего
2) sitename.ru/updatevar/2 // 1
2) sitename.ru/updatevar/3 // 2
и т.д.

Подскажите, куда копать, очень много времени потратил на самостоятельные поиски ответа, но никак.
Спасибо.
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 1
@noteblock Автор вопроса
Код модуля:
<?php

function ajaxcartrefresh_menu(){
	$items = array();
	$items['updatecart/%/%'] = array(
		'page callback' => 'ajaxcartrefresh_updater', // Render HTML
		'page arguments' => array(1,2),
		'type' => MENU_CALLBACK,
		'access arguments' => array('access content'),  
	);
	return $items;
}

function ajaxcartrefresh_updater($order,$cost){
	$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
	commerce_cart_order_refresh($order_wrapper);
	$_SESSION['bxbr'] = $cost;
}

print $_SESSION['bxbr'];

function ajaxcartrefresh_commerce_order_presave($order) {
	$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
	$line_items_quantity = commerce_line_items_quantity($order_wrapper->commerce_line_items, commerce_product_line_item_types());
	
	$discount_decimal = $_SESSION['bxbr'];
	$discount_currency_code = 'RUB';
	
	$order_total = $order_wrapper->commerce_order_total->value();
	$discount_amount = commerce_currency_decimal_to_amount($discount_decimal, $discount_currency_code);
	$discount_amount = commerce_currency_convert($discount_amount, $discount_currency_code, $order_total['currency_code']);
	
	$order_wrapper->commerce_order_total->amount = $order_total['amount'] + $discount_amount;
	$order_wrapper->commerce_order_total->data = commerce_price_component_add($order_total, 'fee', array(
	  'amount' => $discount_amount,
	  'currency_code' => $order_total['currency_code'],
	  'data' => array(),
	), TRUE, FALSE);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы