2016-03-22 33 views
0

我无法使用Composer,因此必须手动安装CakePDF plugin,但以下CakePHP官方文档中的示例看起来不起作用。如何在CakePHP 3中手动安装插件?

因此,这里是我按照安装流程:复制插件更新应用程序的文件composer.jsonapp/plugins/CakePdf

2)

1)类似以下内容:

"autoload": { 
    "psr-4": { 
      "CakePdf\\": "./plugins/CakePdf/src", 
      "CakePdf\\Test\\": "./plugins/CakePdf/tests" 
    } 
}, 
"autoload-dev": { 
    "psr-4": { 
     "App\\Test\\": "tests", 
     "Cake\\Test\\": "./vendor/cakephp/cakephp/tests" 
     "CakePdf\\": "./plugins/CakePdf/src", 
     "CakePdf\\Test\\": "./plugins/CakePdf/tests" 
    } 
} 

3 )加载插件bootstrap.php

Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true, 'autoload' => true]); 

4.)添加路由器扩展:

Router::extensions(['pdf']); 

5.)尝试了非常简单的样品从插件的doc:

$cakePdf = new CakePdf(array(
    'engine' => 'CakePdf.DomPdf', 
    'pageSize' => 'A4', 
    'orientation' => 'portrait' 
)); 

$html = '<html><head><body><p>Pdftest</p></body></head></html>'; 

$rawPdf = $CakePdf->output($html); 

然而,在第一行的代码场所及以下错误信息被设置:

Class 'App\Controller\CakePdf' not found 

我真的很感谢任何关于如何手动安装插件的帮助或指导。

如果有任何其他信息需要提供,请询问。

+0

只更新composer.json不会有任何好处。之后你必须运行'composer update'。 – ADmad

回答

1

你会得到这个错误,因为在vendor/composer/里面你可以看到一些autoload_*.php文件。这些文件包含加载类的路径。我认为没有人能够安全地告诉你要更新什么以及这些文件在哪里。

所以,你有两种解决方案:

1 - 本地机器上复制composer.json和运行composer update。然后移动您的应用程序内创建的文件。我建议以前进行备份。最可能的是,你将有移动的东西是:

vendor/ 
composer.json 
composer.lock 

2 - 开始从插件路径更新内部vendor/composer/autoload_*.php文件。很可能您只需要更新以下两个文件:

vendor/cakephp-plugins.phpvendor/composer/autoload_psr4.php。就我个人而言,我不会选择第二种解决方案,我只是将其作为替代品加入以防万一。

+0

您的评论是有用的。只需要补充一点,我们需要更新这个命令,特别是插件而不是根文件夹。 –