我是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
到目前为止,我已尝试手动执行这些步骤,插件工作正常。我想知道自己是否朝着正确的方向前进?如果是,那么如何通过代码执行上述步骤。
我想通过代码执行的任务是:
Error: Create the class FileUploaderController below in file: src\Controller\FileUploaderController.php
任何帮助将不胜感激。 :)
更新:1 我遇到了link,它也使用了手动方法。但我想通过代码来实现。
更新2
我找到了一种执行composer dump-autoload
的方法。可以这样做:
composer dump-autoload
但我仍然想知道它是否正确。
答案 0 :(得分:0)
最后,我找到了解决问题的方法。必须使用Bootstrap.php
参数autoload
在true
中加载插件。
不编辑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
));
}
}
执行此步骤后,通过我的插件上传的任何插件就像梦一样。