通过Composer安装CakePHP插件和Helper

时间:2013-06-03 00:59:28

标签: cakephp cakephp-2.0 composer-php

我想通过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文件夹中正确加载它们。

2 个答案:

答案 0 :(得分:10)

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

        {
          "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.*"
          }
        }

答案 1 :(得分:0)

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

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

删除我的composer.lock以便重新开始安装,仍然没有将文件放入Plugin文件夹。然而,即使我开始工作,我认为系统可以通过composer autoload识别Vendor文件夹中的插件,也可能是Cake的一些魔法。这样我就可以将整个Vendors文件夹保留在我的存储库中,并根据需要更新我的依赖项。

我最终通过sym链接到Plugin文件夹中的这些文件解决了我的问题,我的系统正在识别插件。