4

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 フォルダーからそれらを適切にロードする方法を把握していない可能性があります。

4

2 に答える 2

10

行ったことはすべて正しいです。プラグインをインストールする場所を composer に指示するセクションを追加するだけです。追加の「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.*"
          }
        }
于 2013-06-03T08:07:38.807 に答える
0

私は今朝私のコメントで急いでいました.composer.jsonに追加した「余分な」ブロックは次のとおりです。

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

インストールをやり直すために composer.lock を削除しても、ファイルが Plugin フォルダーに入れられませんでした。ただし、それが機能したとしても、コンポーザーのオートロードとおそらく Cake の魔法を介して、システムが Vendor フォルダーからプラグインを認識することは可能だと思いました。そうすれば、Vendors フォルダー全体をこのプロジェクトのリポジトリから除外し、必要に応じて依存関係を更新することができます。

プラグインフォルダーからこれらのファイルにシンボリックリンクするだけで問題を解決し、システムがプラグインを認識しています。

于 2013-06-04T01:06:31.187 に答える