Всем привет.
В общем ситуация следующая:
Программно добавляю изображение к ноде, изображение обновляется (в редактировании ноды, новый файл), но в отображении показывается старое изображение, как будто какой то node rebuild надо вызвать.
Т.е. если открыть редактирование ноды и добавить другое изображение все отлично.
Вот код:
<?php
$replace = move_uploaded_file($tmp_name, $poster_dir . '/' . $poster_name);
if ($replace) {
$poster_uri = 'public://user_files/' . $owner_id . '/posters/' . $model_id . '/' . $poster_name;
$file = File::create([
'filename' => $poster_name,
'uri' => $poster_uri,
'status' => 1,
]);
$file->setPermanent();
$file->save();
$node->set('field_model_poster', ['target_id' => $file->id()]);
$node->save();
}
?>
Комментарии
В общем решил эту проблему предварительным удалением прикрепленного изображения:
<?php
if (!$node->field_model_poster->isEmpty()) {
$old_file_id = $node->get('field_model_poster')->getValue()[0]['target_id'];
$old_file = \Drupal::entityTypeManager()
->getStorage('file')
->load($old_file_id);
$old_file->delete();
}
?>
Оказывается нет, это срабатывает ровно два раза, ничего не понимаю
И снова всему виной кеш)) В общем изображение попадает в кеш браузера и никак не обновляется пока явно его не сбросишь Ctrl+F5.
Есть ли какой то вариант сделать это программно?
Может быть, превью перегенерировать попробовать?
Пробовал) и пробовал функцию сброса стилей для конкретного файла, результат тот же.
В стандартном интерфейсе ведь работает. Значит есть где то эта таинственная функция)
Браузер кэширует картинки по названию. Тут надо либо заголовки сервера настраивать, либо менять имя файла. Если файл называется по-другому, то тут без вариантов.
Да файл у меня всегда одинаково называется, надо попробовать) Спасибо добрый человек)
Так и есть) из-за генерации изображения с тем же самым названием оно не обновлялось в кэше, будьте внимательней) спасибо за помощь!