我按照步骤将 CakePHP 3.9 迁移到 4,前端工作正常,但管理不正常,这意味着我有一个 /site 路径和一个 /site/admin,在检查日志后我意识到 Cake 仍然在 /src 文件夹中查找管理模板(仅适用于 /admin),但前端路由(/site)不会发生这种情况,有任何线索吗?
2024-01-09 03:52:34 错误:[Cake\View\Exception\MissingElementException] 无法找到元素文件
structure/admin/head.php
。
搜索了以下路径:
/var/www/site/plugins/myplugin/templates/Admin/element/structure/admin/head.php
/var/www/site/plugins/myplugin/templates/element/structure/admin/head.php
/var/www/site/src/Template/Admin/element/structure/admin/head.php
/var/www/site/src/Template/element/structure/admin/head.php
/var/www/site/vendor/cakephp/cakephp/templates/Admin/element/structure/admin/head.php
/var/www/site/vendor/cakephp/cakephp/templates/element/structure/admin/head.php
在 /var/www/site/vendor/cakephp/cakephp/src/View/View.php 第 710 行我已经像这样更新了app.php(遵循官方文档):
return [
'App' => [
'encoding' => 'UTF-8',
'namespace' => 'App',
'paths' => [
'plugins' => [ROOT . DS . 'plugins' . DS],
'templates' => [ROOT . DS . 'templates' . DS],
'locales' => [RESOURCES . 'locales' . DS],
// 'templates' => [APP . 'Template' . DS],
// 'locales' => [APP . 'Locale' . DS],
],
],
已修复!我没有意识到插件配置也需要更新(一一更新),这意味着未能通过“发现模板路径过程”的插件需要与 app.php (文档没有提及这个问题):
这有效! 文件:config/sites/myplugin/local.php
'paths' => [
// 'plugins' => [ROOT . DS . 'plugins' . DS],
// 'templates' => [APP . 'Template' . DS],
// 'locales' => [APP . 'Locale' . DS],
'plugins' => [ROOT . DS . 'plugins' . DS],
'templates' => [ROOT . DS . 'templates' . DS],
'locales' => [RESOURCES . 'locales' . DS],
],