Проблема при редиректе

Доброго времени суток!

есть код:


  

public function actionActivate($id)

        {

            if(Yii::app()->request->isPostRequest)

            {

                $model = $this->loadModel($id);

                $model->status = "ok";

                $model->modified = date("Y-m-d H:i:s");

                $model->save();


                if(!isset($_GET['ajax'])){

                    $this->refresh();

                    $this->redirect(array('/products/my'));

                }

            }

            else

                throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

        }


        public function actionMy()

        {

            $ProductsModel = new Products();

            $dataProvider = $ProductsModel->retrieve();

            $this->render('my',array(

                'dataProvider'=>$dataProvider,

            ));

        }



Делаю ПОСТ запрос на этот метод actionActivate(), потом идет редирект на метод actionMy(), где уже просто вытаскиваю все из таблицы Products. Проблема: Изменения отредактированной модели в actionActivate() будут видны только перезагрузки страницы.

Что не так, помогите пожалуйста.

Добрый день

Начну с пары вопросов:

  1. Зачем используется

$this->refresh();

перед редиректом? Не вижу смысла перезагружать страницу перед перенаправлением, да и, по-идее, после рефреша, т.к. массив POST будет очищен, метод actionActivate() должен вернуть ошибку.

  1. Включено ли кеширование в приложении?

  2. Как выглядит код для


$ProductsModel->retrieve()

?

Вот метод $ProductsModel->retrieve()

Можно еще раз написать, в чем именно видна проблема? После первого поста у меня сложилось, судя по всему, неправильное понимание.

То бишь редирект вообще не срабатывает? Раз не выбрасывается 400 ошибка и модель апдейтится, тогда ответ напрашивается простой - !isset($_GET[‘ajax’]) возвращает false.

Пробовали проверить что приходит в $_REQUEST? или прописать echo ‘ANY’; внутри условия, сразу перед редиректом?

Нет, я видимо невнятно объяснил, попробую еще раз.

Находимся на странице products/my, отображаем продукты, жмем на один из них - POST заспрос на products/activate, выбранный продукт активируется, сохраняем его, отсюда редирект на prodcuts/my, тоесть обратно. Вот сдесь и наблюдается баг. по идее уже он должен быть активированным, но НЕТ, он все еще не активирован. Вот если порпосту нажать F5 то отображается как активированный. Вот так.

Перед нажатием на F5 в базе данных продукт обновляется?

И как общий метод, можно продебагить(xdebug, например) весь процесс, так, думаю, быстрее можно найти проблему.

У меня такая же проблема. Видимо это баг фреймворка, либо кешируются данные. Хотя я нигде кеширование не включал, может где-то по умолчанию он срабатывает?

У меня есть страничка с отображением данных: заголовок и описание. Есть другая страничка, где эти данные добавляем. Как только данные добавляются в БД я делаю редирект на страничку со списком заголовков и описаний. Данные отображаются старые, после обновления странички уже становится видна новая добавленная запись. Как увидеть новую запись странички без использования обновления?

Посмотрите какие заголовки проходят между сервером и браузером.

Скорее всего браузер кэширует страничку, раз после F5 всё показывается как надо.