Encoderast
@Encoderast
frontend пытается что-то делать в backend

Yii2 -> сброс кэша?

Hello World

Пытаюсь сбросить кэш из контроллера при обновлении модели, но как то безуспешно, что не так?

Код:
public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            $model->image = UploadedFile::getInstance($model, 'image');
            if( $model->image ){
                $model->upload();
            }
            unset($model->image);
            $model->gallery = UploadedFile::getInstances($model, 'gallery');
            $model->uploadGallery();

            Yii::$app->session->setFlash('success', "{$model->name} обновлен(а)");
            Yii::$app->cache->delete($header1);
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }


Yii::$app->cache->delete($header1);

delete($header1); - не чистит
deleteValue($header1); - не чистит
offsetUnset($header1); - не чистит
flush() - полный сброс не вариант, но он хотя бы работает

Кэширую:
<?php if($this->beginCache($header1, array('duration'=>60))) { ?>
 / / /
<?php $this->endCache(); } ?>
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 2
@karminski
Senior React.JS Developer
Судя по коду выше $header1 вообще не определен в методе actionUpdate.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$header1 - должен содержать ключ, с которым Вы создавали кеш, у Вас он явно равен null, так с чего он должен работать? Вы даете команду удалить что-то, но не указываете что.
У Вас перед
$this->beginCache($header1, array('duration'=>60)))

Наверняка задан $header1, так почему Вы его не задаете в экшене? Если не задан, тогда стоит открыть учебник по php, при чем с первой главы. Там где переменные и типы данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы