【发布时间】:2022-07-03 20:56:03
【问题描述】:
我正在将一个项目从 CakePHP 3.5 更新到 4.0。 在我的一个模型中,我正在这样做:
public function afterSave(Event $event, EntityInterface $entity)
{
Cache::clear(false, 'dbResults');
}
这在我的项目的“旧”版本中使用 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): Cake\Cache\Cache::_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'));
我不明白为什么在一切似乎都已正确配置时出现此错误。
【问题讨论】:
-
clear函数只带一个参数,要清除的缓存配置的名称。 -
@GregSchmidt 这就是问题所在,谢谢。
clear方法的签名从 Cake 3 更改为 Cake 4。如果您将其作为答案发布,我将接受。
标签: php cakephp cakephp-3.0 cakephp-4.x