【问题标题】:Install CakePHP Plugin and Helper via Composer通过 Composer 安装 CakePHP 插件和 Helper
【发布时间】:2013-05-29 03:13:11
【问题描述】:

我想通过 Composer 安装以下插件和助手:

https://github.com/cakephp/debug_kit
https://github.com/loadsys/twitter-bootstrap-helper

这是我的 composer.json:

{
"repositories": [
    {
        "type": "package",
        "package": {
            "name": "cakephp/debug_kit",
            "version": "2.0",
            "source": {
                "url": "https://github.com/cakephp/debug_kit",
                "type": "git",
                "reference": "origin/2.0"
            }
        }
    },
    {
        "type": "package",
        "package": {
            "name": "loadsys/twitter-bootstrap-helper",
            "version": "2.1",
            "source": {
                "url": "https://github.com/loadsys/twitter-bootstrap-helper",
                "type": "git",
                "reference": "origin/2.1"
            }
        }
    }
],
"require": {
    "loadsys/twitter-bootstrap-helper": "2.1.*",
    "cakephp/debug_kit": "2.0"
},
"config": {
    "vendor-dir": "Vendor/"
},
"autoload": {
    "psr-0": {
        "DebugKit": "/cakephp/debug_kit/",
        "TwitterBootstrap" : "/loadsys/twitter-bootstrap-helper"
    }
}
}

软件包已成功安装在 Vendor/cakephp/debug_kit 和 Vendor/loadsys/twitter-bootstrap-helper

我的问题在于如何在 CakePHP 中加载它们。我的 bootstrap.php 中有以下内容:

require APP . 'Vendor/autoload.php'; 

当我在要求自动加载后尝试加载插件时:

CakePlugin::load('DebugKit');

找不到。使用

在我的 AppController.php 中加载帮助程序的类似结果
public $helpers = array('TiwtterBootstrap');

我是 Composer 的新手,可能缺少一些简单的东西,或者只是不了解如何从 Vendors 文件夹中正确加载它们。

【问题讨论】:

    标签: cakephp cakephp-2.0 composer-php


    【解决方案1】:

    今天早上我的评论很匆忙,这是我添加到 composer.json 中的“额外”块:

        "extra": {
        "installer-paths": {
            "Plugin/DebugKit": ["cakephp/debug_kit"],
            "Plugin/TwitterBootstrap": ["loadsys/twitter-bootstrap-helper"]
        }
    

    删除我的 composer.lock 以重新开始安装,仍然没有将文件放入插件文件夹。然而,即使我让它工作,我认为系统可以通过作曲家自动加载识别 Vendor 文件夹中的插件,也许还有来自 Cake 的一些魔法。这样我就可以将整个 Vendors 文件夹保留在该项目的存储库之外,并根据需要更新我的依赖项。

    我最终通过从插件文件夹中符号链接到这些文件来解决我的问题,并且我的系统正在识别插件。

    【讨论】:

      【解决方案2】:

      你所做的一切都是正确的,你只需要添加一个额外的部分来指示作曲家在哪里安装你的插件。注意额外的“安装程序路径”部分 ,它需要指向您希望安装插件的相对路径。

              {
                "minimum-stability": "dev",
                "config": {
                    "vendor-dir": "vendors"
                },
                "extra": {
                  "installer-paths": {
                    "app/Plugin/DebugKit": ["cakephp/debug_kit"],
                  }
                },
                "require" : {
                  "php": ">=5.4",
                  "cakephp/debug_kit": "2.2.*"
                }
              }
      

      【讨论】:

      • 我添加了以下内容(没有 app 文件夹,因为所有工作都是使用 app 完成的,因为我的 CakePHP 核心位于其他地方,并且 webroot/index.php 已根据需要进行调整):
        "extra": { "installer-paths": { "Plugin/DebugKit": ["cakephp/debug_kit"], "View/Helper": ["loadsys/twitter-bootstrap-helper"] } } 
        我清除了之前创建的所有内容,包括 composer.lock 并重新运行安装。结果相同。插件或视图/助手中没有任何内容
      • “额外”部分对我有用,但需要删除 ["cakephp/debug_kit"] 之后的尾随逗号
      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 2019-09-12
      • 1970-01-01
      • 2021-05-05
      • 2023-04-04
      • 1970-01-01
      • 2019-12-12
      • 2017-07-23
      相关资源
      最近更新 更多