【发布时间】:2022-01-03 20:56:15
【问题描述】:
我在我的 Cakephp4 应用程序中使用插件 cakephp-glide。
我想在图像被删除后立即删除图像的 Glide 缓存。
我的插件FileManager在删除图像文件时触发事件'afterDelete':
// in FileManager.FichiersTable
public function afterDelete(Event $event, EntityInterface $entity, ArrayObject $options)
{
$fichier = new File(WWW_ROOT . $entity->url);
$fichier->delete();
$afterDeleteEvent = new Event('FileManager.Fichiers.afterDelete', $this, [
'file' => $entity
]);
$this->getEventManager()->dispatch($afterDeleteEvent);
}
我想在我的应用程序的引导程序中捕获事件以删除图像的缓存:
//in bootstrap.php
EventManager::instance()
->on(
'FileManager.Fichiers.afterDelete',
function (Event $event) {
// Delete cache of $event->getData('file')
$filename = $event->getData('file')->filename;
$server->deleteCache($filename); // How to get the instance $server ???
}
);
但是我不知道如何获取 Glide Server 实例?
我在插件中找不到获取它的方法。 如果有人可以帮助我...
【问题讨论】:
-
查看插件代码,服务器实例似乎永远不会离开中间件,甚至没有为每个请求创建它。我不知道自己实例化服务器是否是一个好主意,我从未使用过 Glide,所以我真的无法提供任何进一步的建议。你可能想在 Slack 中问这个问题,ADmad 有时也在那里,或者如果你认为这可能被认为是缺少功能,甚至可以在 GitHub 上创建一个问题。
标签: php cakephp-4.x