Ajax скрипт корзины в simpla cms.
-Ajax'ом отправляю количество товара
-Отдаю все в php для изменения сессии корзины
-В ответ возвращаю нужные куски для замены в html
И все бы хорошо, но tpl который беру через fetch отдаёт не корректно.
Ответ приходит всегда, все куски правильные, но вот fetch(cart_purchases.tpl) моментами от предыдущих запросов. Как будто не обновившись. Чувство что этот шаблон не успевает сгенерироваться и отдаетсяпредидущая версия. Обнуляю переменную в которую ложу шаблон - не помогло.
Менял сервер, хостинг не помогло. На одном все исправно работало только увеличилась задержка выполнения скрипта.
Если делаю задержку после вызова шаблона отрабатывает исправно.
Как заставить php или Smarty точно прогрузить актуальный, обновлённый tpl?
Максим Федоров, да, все верно. все счетчики считаються верно и в сессию все верно записывается.
а вот там где tpl подтягиваю то только если поштучно, медлено добавлять.
часть php которая обрабатывает ajax зарос:
$cart_purchases = '';
$cart_purchases = $simpla->design->fetch('cart_purchases.tpl');
usleep(200000); // костыль, для генерации
if(!empty($cart_purchases){ //делаю проверку, но без толку
if (count($cart->purchases) > 0) {
$result = array('result' => 1);
$result['cart_purchases'] = $simpla->design->fetch('cart_purchases.tpl'); // при быстом добавлении не всегда отдает tpl последнего выполнения
$result['cart_informer'] = $simpla->design->fetch('cart_informer.tpl');
// все верно как бы быстро не добавлять
$result['cart_total_price'] = $cart->total_price;
$result['total_products'] = $cart->total_products;
}
else
{
$result = array('result' => 0);
$result['cart_informer'] = $simpla->design->fetch('cart_informer.tpl');
$result['cart_total_price'] = $cart->total_price;
$result['total_products'] = $cart->total_products;
}
}
Поставил чистую симплу с тем же шаблоном - вопрос решился.
Напомню ajax -> php -> smarty fetch cart_purchases.tpl
Несколько интересных наблюдений на разных серверах, хостингах:
1. Скрипт выполняется моментально, но fetch cart_purchases.tpl выдает не корректный результат зачастую от предыдущего выполнения.
2. Скрипт выполняется медленно, в развалочку, по одному запросу и точно как нужно.
Симпла была модифицированная, что точно делало баг не понятно.