обновление индикатора приложения

На основе приложение shop посмотрел как выводится индикатор приложение, сделал по подобию, но при смене status у записи в БД, индикатор не сразу обновляется, как сделать чтобы сразу обновлялся индикатор
public function onCount()
{
$model = new callbackModel();
return $model->countByField('status',0);
}


Нашел код в приложение installer, но я не знаю он ли...
public function setCount($n = null)
{
wa()->getStorage()->open();
$model = new waAppSettingsModel();
$model->ping();
$app_id = $this->getApplication();
$model->set($app_id, 'update_counter', $n);
$model->set($app_id, 'update_counter_timestamp', ($n === false) ? 0 : time());
parent::setCount($n);
}

5 ответов

  • 1
    Михаил Ушенин Webasyst 15 ноября 2013 03:45 #
    http://www.webasyst.ru/developers/docs/features/app-indicator/
  • 1
    Индикаторы устроены так. При загрузке лэйаута (т.е. где подключается {wa_header}) смотрим, есть ли что-нибудь в сессии по ключу 'apps-count'. Если есть - берём значения индикаторов оттуда, а AJAX-обновление запускаем только через минуту. Если нету, сразу при загрузке страницы запускаем обновление индикаторов по AJAX.

    Если ваше приложение - не AJAX-based (в том смысле, что лэйаут загружается каждый раз при переходе по ссылкам), вы можете поступить так. При смене статуса у записи в БД удалите старые каунтеры из кеша:

    wa()->getStorage()->del('apps-count');

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите