我正在更新一个项目从CakePHP 3.5到4.0。在我的一个模型中,我这样做:
public function afterSave(Event $event, EntityInterface $entity)
{
Cache::clear(false, 'dbResults');
}
在"old"我的项目版本与CakePHP 3.5,但失败与CakePHP 4.0错误
The "" cache configuration does not exist.#0 /var/www/repo/public/vendor/cakephp/cakephp/src/Cache/Cache.php(230): CakeCacheCache::_buildEngine('')
我不明白为什么代码试图搜索一个空字符串""
的配置。
这是我的app.php
配置文件的相关部分:
'Cache' => [
'default' => [
'className' => 'File',
'prefix' => 'headless_',
'path' => CACHE,
'url' => env('CACHE_DEFAULT_URL', null),
],
'_cake_core_' => [
'className' => 'File',
'prefix' => 'headless_cake_core_',
'path' => CACHE . 'persistent/',
'serialize' => true,
'duration' => '+2 minutes',
'url' => env('CACHE_CAKECORE_URL', null),
],
'_cake_model_' => [
'className' => 'File',
'prefix' => 'headless_cake_model_',
'path' => CACHE . 'models/',
'serialize' => true,
'duration' => '+2 minutes',
'url' => env('CACHE_CAKEMODEL_URL', null),
],
'permissions' => [
'className' => 'File',
'prefix' => 'headless_',
'path' => CACHE . 'permissions/',
'url' => env('CACHE_PERMISSIONS_URL', null),
],
'dbResults' => [
'className' => 'File',
'prefix' => 'headless_',
'path' => CACHE . 'dbResults/',
'url' => env('CACHE_PERMISSIONS_URL', null),
'duration' => '+1440 minutes',
],
'pages' => [
'className' => 'File',
'prefix' => 'page_',
'path' => CACHE . 'pages/',
'serialize' => true,
'duration' => '+320 minutes',
],
'page_contents' => [
'className' => 'File',
'prefix' => 'pc_',
'path' => CACHE . 'page_contents/',
'serialize' => true,
'duration' => '+320 minutes',
],
],
除此之外,在我的bootstrap.php
文件中,我正在做
Cache::setConfig(Configure::consume('Cache'));
我不明白为什么当一切似乎都正确配置时,我得到这个错误。
请更新以下行
Cache::clear('dbResults');
在CakePHP 4中,Cache::clear()只接受一个参数,而不是CakePHP 3。他们去掉了$check
参数。不幸的是,迁移指南似乎没有对此进行更新。
参考:https://book.cakephp.org/4/en/core-libraries/caching.html clearing-cached-data