如何让 CakePHP 加载我的 <project_root>/src 目录而不是 vendor/maiconpinto/cakephp-adminlte-theme/src
Posted
技术标签:
【中文标题】如何让 CakePHP 加载我的 <project_root>/src 目录而不是 vendor/maiconpinto/cakephp-adminlte-theme/src【英文标题】:How do I get CakePHP to load my <project_root>/src directory instead of vendor/maiconpinto/cakephp-adminlte-theme/src 【发布时间】:2019-07-09 04:41:36 【问题描述】:总结: 我是一个网络和后端新手,但基本上我继承了一个 Cakephp 项目,我正在尝试建立一个开发环境。我正在尝试在 http://localhost/backend/ 上显示我的项目级 src 目录,该目录会自动路由到 http://localhost/backend/admin/users/dashboard em>,但它只加载 PROJECT_ROOT/vendor/maiconpinto/cakephp-adminlte-theme/src。
问题: 如何使用我的*** src 目录加载我自己的侧边栏?提前致谢! 这是所需的侧边栏:correct myteamconnector sidebar 这是正在加载的侧边栏:incorrect vendor files sidebar
设置信息: 系统:Mac OS 10.14 开发应用:
AMPPS v3.8 Apache v2.4.27 PHP v7.1 mysql v5.6.37 CakePHP v3.5.17PROJECT_ROOT/index.php:
require 'webroot' . DIRECTORY_SEPARATOR . 'index.php';
PROJECT_ROOT/webroot/index.php:
// Check platform requirements
require dirname(__DIR__) . '/config/requirements.php';
// For built-in server
if (php_sapi_name() === 'cli-server')
$_SERVER['PHP_SELF'] = '/' . basename(__FILE__);
$url = parse_url(urldecode($_SERVER['REQUEST_URI']));
$file = __DIR__ . $url['path'];
if (strpos($url['path'], '..') === false && strpos($url['path'], '.') !== false && is_file($file))
return false;
require dirname(__DIR__) . '/vendor/autoload.php';
use App\Application;
use Cake\Http\Server;
// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));
// Run the request/response through the application and emit the response.
$server->emit($server->run());
【问题讨论】:
您的第一个问题是您实际上并不想加载src
文件夹。 webroot
文件夹中应该有一个index.php
,它负责正确引用src
中的实现所需的一切。换句话说,将您的 Web 服务器的“文档根目录”指向 webroot
文件夹,您应该会顺利进行。
嗯。这就说得通了。谢谢回复。我在帖子中添加了index.php
和webroot/index.php
的内容。关于绑定我的应用程序的行指向我的config
目录,所以不确定我会改变什么,但我显然仍然错过了一些重要的东西。
当它绑定应用程序时,它通过config目录,这样它就知道从哪里加载bootstrap.php
。这一切看起来完全正确。将服务器的文档根目录指向webroot
文件夹,它仍然无法正常工作吗?如果没有,请详细说明“不工作”的含义,并确保在 config/app.php
中将 debug
设置为 true,以便获得最大的错误报告。
我添加了未加载的侧边栏图像。更准确地说,看起来有些内容正在加载,但左侧边栏不正确。它只显示来自vendor/
的一些默认内容,但它应该显示我在 myteamconnector.com 的实时应用程序中看到的侧边栏。 debug
在我的 config/app.php
中设置为 true。很抱歉这里没有理解所有内容。
您需要在代码中找到添加侧边栏的位置。它可能在src/Template/Layout/default.ctp
之下,尽管它可能是vendor/maiconpinto/src/Template/Layout/default.ctp
。有很多方法可以做到这一点,所以有很多方法会出错。但是,查看您的环境和配置并不能真正帮助解决它,而且所有这些都可能会让本来可以提供帮助的人望而却步。
【参考方案1】:
已解决
问题是 composer.json 文件指定了"maiconpinto/cakephp-adminlte-theme": "^1.0"
,因此安装 v1.1.0 需要不同的实现,具体取决于 cakephp 版本是 =3.5。
所以在 composer.json 文件中指定 "maiconpinto/cakephp-adminlte-theme": "1.0.8"
安装了以前的版本,它与我的 repo 中的实现兼容。
出于某种原因,在工作版本中,composer.json 文件和供应商文件夹之间存在不匹配(即供应商文件夹包含一堆 composer.json 文件没有的插件),只要您允许一切正常工作没有运行作曲家更新,我的同事没有这样做。
【讨论】:
以上是关于如何让 CakePHP 加载我的 <project_root>/src 目录而不是 vendor/maiconpinto/cakephp-adminlte-theme/src的主要内容,如果未能解决你的问题,请参考以下文章
在 CakePHP 2 中不会加载 Intelephense 存根