上传新插件并更新cakephp3中的composer.json的插件

时间:2016-06-03 12:12:49

标签: php cakephp composer-php cakephp-3.0

我是cakephp3的新手,如果我出错了,请指导我。 我有一个插件,它将插件的zip文件作为输入,解压缩并将其上传到插件文件夹。

问题是,需要在q = []; addQueue(1)(2)(3)(4)(5); addQueue('a')('b')('d'); addQueue(1)(2)(3)(4)(5); addQueue('a')('b')('d'); addQueue(1)(2)(3)(4)(5); addQueue('a')('b')('d'); function queue(){ if(q.length){ setTimeout(function(){ console.log('queue: ' + q.shift()); q.length && queue(); }, 1000); } } function addQueue(n){ if(q.length){ q.push(n); }else{ q.push(n); queue(); } return addQueue; } 中添加插件名称并将其加载到comsposer.json中。还有一个额外的步骤要执行,我必须运行bootstrap.php才能使插件正常工作。如果不执行这些步骤,composer dump-autoload会出错:

cakephp3

到目前为止,我已尝试手动执行这些步骤,插件工作正常。我想知道自己是否朝着正确的方向前进?如果是,那么如何通过代码执行上述步骤。

我想通过代码执行的任务是:

  1. 更新Composer.json
  2. 在bootstrap.php中加载插件
  3. 运行命令或获得与Error: Create the class FileUploaderController below in file: src\Controller\FileUploaderController.php
  4. 相同的功能

    任何帮助将不胜感激。 :)

    更新:1  我遇到了link,它也使用了手动方法。但我想通过代码来实现。

    更新2 我找到了一种执行composer dump-autoload的方法。可以这样做:

    composer dump-autoload

    但我仍然想知道它是否正确。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决问题的方法。必须使用Bootstrap.php参数autoloadtrue中加载插件。

不编辑composer.json,也不执行任何命令。

我刚刚将以下功能添加到我的控制器中,使用bootstrap.php更新autoload=true

function modifyBootstrap($plugin)
{
    $bootstrap = new File(ROOT . DS . 'config' . DS . 'bootstrap.php', false);
    $contents = $bootstrap->read();
    if (!preg_match("@\n\s*Plugin::loadAll@", $contents)) {
        $autoload = "'autoload' => true, ";
        $bootstrap->append(sprintf(
            "\nPlugin::load('%s', [%s'bootstrap' => false, 'routes' => true]);\n",
            $plugin,
            $autoload
        ));
    }
}

执行此步骤后,通过我的插件上传的任何插件就像梦一样。