Symfony 在src外部创建一个Bundle/

Symfony 在src外部创建一个Bundle/,symfony,bundle,src,Symfony,Bundle,Src,我已经用symfony 2.3创建了一个bundle,但是在这种情况下(因为我的老师要求我)在src/文件夹之外,所以我使用了。/symfony/fuentes/NameBundle而不是。/symfony/src/NameBundle。新行出现在AppKernel中,我的新包出现在routing.yml上,但是当我尝试启动服务器时 包生成 生成捆绑代码:确定 检查捆绑包是否自动加载:失败 确认内核的自动更新[是]? 在内核中启用捆绑包:确定 确认路由的自动更新[是]? 导入捆绑路由资源:确定

我已经用symfony 2.3创建了一个bundle,但是在这种情况下(因为我的老师要求我)在
src/
文件夹之外,所以我使用了
。/symfony/fuentes/NameBundle
而不是
。/symfony/src/NameBundle
。新行出现在AppKernel中,我的新包出现在
routing.yml
上,但是当我尝试启动服务器时

包生成
生成捆绑代码:确定
检查捆绑包是否自动加载:失败
确认内核的自动更新[是]?
在内核中启用捆绑包:确定
确认路由的自动更新[是]?
导入捆绑路由资源:确定
该命令无法自动配置所有内容。
您必须手动执行以下更改。
-编辑composer.json文件并注册捆绑包
“自动加载”部分中的命名空间:
我已经编辑自动加载,并尝试了很多事情(在这里寻找),但它似乎总是相同的错误

C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony>php app/console server:run 127.0.0.1:8080
PHP Fatal error:  Class 'AulaMentor\ExdosBundle\AulaMentorExdosBundle' not found in C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony\app\AppKernel.php on line 20
有人能帮我吗?我真的受不了了。
提前感谢。

完全按照评论中所说的做:

Edit the composer.json file and register the bundle namespace in the "autoload" section

使用PSR约定自动加载
src
文件夹。如果您在src文件夹之外设置类,那么也必须声明它们

composer.json
文件中,可以在
autoload
部分添加另一个元素。下面是一个我认为适用于您的用例的示例:

“自动加载”:{
“psr-0”:{
“NameBundle\\”:“fuentes/”,
“”:“src/”
}
},

首先,我要感谢回答问题的人。如果我们想在“src”文件夹外创建一个bundle,例如在“fuentes”>“…Symfony/fuentes”中,我们必须这样做

如果您使用“generate:bundle”创建,我建议您在生成器询问您是否要创建完整的结构时接受,如果您使用generator创建bundle,请转到步骤3

1-确保您已经在AppKernel中注册了bundle,并且它存在一行,如下所示:

新建YourProject\NameprojectBundle\YourProjectNameprojectBundle(),

2-确保您已将路由添加到app/config/routing,并且“routing.yml”已为您添加了新的捆绑路由,如下所示(您可以在url中添加前缀,在本例中为fuentes):

您的项目名称:
资源:“@YourProjectNameprojectBundle/Resources/config/routing.yml”
前缀:/fuentes

3-我们编辑“app/autoload.php”,并添加以下行:

$loader->add('YourProject',realpath(\uu DIR\uu.'/../fuentes')

最后,我们可以使用命令行更新资产: php应用程序/控制台资产:安装web

希望对某人有所帮助。

致以最诚挚的问候。

当我们不想弄乱composer.json文件时,下面介绍如何在Symfony项目之外添加另一个包

前两点与Michael J.的答案相同。现在谈谈第三点:

比如说,我们需要在另一个项目中添加一个OurCompany/SomeBundle,其相对路径是。/../OtherProject/src/OurCompany/SomeBundleCurrentProject/app目录

因此,我们通过以下方式将此捆绑包添加到CurrentProject应用程序:

$loader->add('OurCompany\\SomeBundle', realpath(__DIR__.'/../../OtherProject/src'));
请注意斜杠和反斜杠应该如何使用(最后剩下的/或\无关紧要,它足够聪明来解决这个问题)

对于要加载的整个命名空间(CurrentProject中其他项目中的所有捆绑包命名空间):


为什么他会问这样的问题?看起来你在运行app/console生成:bundle命令?i.am.michiel-因为我在做一个练习-是的,我使用了生成:bundle命令,但没有problem@i.am.michiel想象一个场景,你自己制作了一个孤立的本地包,但是你不想把它放到git存储库中,至少现在是这样。i.am.michiel-我已经尝试过了(当然)编辑symfony/composer.json它在4me中不起作用,事实上我已经尝试了很多东西,但它并没有解决这个问题。您说过“它们也必须声明。”好的,但是如何声明呢?对于最新的Symfony版本,在使用'generate:bundle'命令时必须添加--shared参数。
$loader->add('OurCompany', realpath(__DIR__.'/../../OtherProject/src'));