在供应商下移动默认AppBundle

时间:2017-06-12 13:10:54

标签: php symfony

我有一个新的symfony项目。默认情况下,它包含

-/AppBundle
-AppBundle.php
--/Controller
--/Default Controller

由于我将有更多的捆绑包,我希望它在名为MyProject的VendorName下,我有我的ApiBundle。

我尝试手动移动AppBundle,然后更改文件,yml文件和AppKernel中的命名空间。但我仍然收到错误

Expected to find class "AppBundle\AppBundle" in file "/Applications/MAMP/htdocs/healthy-living/src/HealthyLiving/AppBundle/AppBundle.php" while importing services from resource "../../src/HealthyLiving/AppBundle/*", but it was not found! Check the namespace prefix used with the resource.' in /Applications/MAMP/htdocs/healthy-living/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php:133

是否有任何控制台命令可以执行此操作,如果不是,那么移动它的步骤应该是什么。

提前致谢

3 个答案:

答案 0 :(得分:1)

没有控制台命令或程序可以执行此操作,因为它不是vendor文件夹的设计目的。 vendor文件夹用于存储3rd-party代码,因此在vendor中保留您正在开发的自己的捆绑包并不是一个好主意。

  

因为我将有更多的包

您没有理由不在src文件夹中保留多个捆绑包。实际上,当Symfony引入Bundle系统时,src文件夹中包含很多包很常见。

(请注意,vendor文件夹几乎总是添加到.gitignore - 这是因为我之前写过的内容)

在澄清问题后编辑: 看起来生成包的命令在创建没有Vendor文件夹的包时遇到了一些问题:

Issue

Pull request

我不知道您使用的是哪个版本的Symfony,但无论哪种方式手动创建捆绑包都是一个好主意,它也解决了您的问题。 (您可以在没有供应商名称的情况下创建它)

答案 1 :(得分:0)

您可以将API包上传到存储库(Github,Gitlab,Bitbucket等),然后将其作为外部依赖项导入到Composer中。

答案 2 :(得分:0)

由于配置文件必须更改,因此移动过于复杂,因此我决定执行一种解决方法并将其删除,然后通过控制台在同一父项下安装。奇迹般有效。 Althoug可能是cli的一种方法。