如何让 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.17

PROJECT_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.phpwebroot/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 存根

使用npm直接从github repo安装加载模块

我在 cakephp3 上的脚本太长而无法加载

cakephp 或 php 中的实时数据更新

从 Vue 访问 CakePHP webroot 目录:图像加载

cakephp 2 上的自动完成 Ajax