我的捆绑包位于src/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.php
,捆绑包的逻辑名称为'CinergyComponentBundle'
。
由于我没有坚持公司的命名惯例,我必须更改捆绑的逻辑名称。让我知道我必须将其重命名为'XXXCinergyComponentBundle'
我需要更改哪些文件?
我尝试将CinergyComponentBundle.php
文件和包含的类重命名为XXXCinergyComponentBundle.php
。我还在AppKernel中更改了引用。
不幸的是,这不起作用。当我尝试清除缓存时,我收到以下错误消息:
[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]
The service "cinergy.people.direct.php" has a dependency on a non-existent service "cinergy.work.registry".
这两个服务确实属于具有新名称的包。这使我得出结论,我在重命名过程中遗漏了一些东西。
有什么想法吗?
答案 0 :(得分:9)
我刚刚完成了一个自己重命名的捆绑包,结果与几分钟前完全相同。到目前为止,我已经使用了我的编辑器replace-function。事实证明,有一些文件需要一些额外的照顾,这些文件位于这里(假设你的旧Bundle名称是AcmeOldBundle,new将是AcmeNewBundle):
不要忘记更新文件中的类名。
答案 1 :(得分:7)
目前的答案确实解释了如何重命名一个包但他们遗漏了一些东西:
在/app/AppKernel.php
自:
$bundles = [
// ...
new Acme\OldBundle\AcmeOldBundle(),
];
要:
$bundles = [
// ...
new Acme\NewBundle\AcmeNewBundle(),
];
重命名文件和文件夹
您需要重命名包含代码的文件和文件夹:
src/Acme/OldBundle -> src/Acme/NewBundle
src/Acme/OldBundle/OldBundle.php -> src/Acme/NewBundle/NewBundle.php
# If present
src/Acme/OldBundle/DependencyInjection/AcmeOldExtension.php -> src/Acme/NewBundle/DependencyInjection/AcmeNewExtension.php
命名空间
这可能会忘记一些文件并在每个匹配的搜索中搜索。最好的办法是做一个find-replace:
# find -> replace
acme_old -> acme_new
Acme\OldBundle\ -> Acme\NewBundle
AcmeOld -> AcmeNew
Acme:Old -> Acme:New
Acme:OldBundle -> Acme:NewBundle
请务必检查捆绑包中的所有命名空间,类名和配置文件。
全局配置文件
在app/config/
中搜索旧包名称的任何匹配项,并将其替换为新的包名称。
答案 2 :(得分:3)
您需要更新每个文件中的整个命名空间。
您使用的是namespace Cynergy\ComponentBundle\Something;
,但现在正在使用namespace XXXCynergy\ComponentBundle\Something;
不要忘记更新services.(xml|yml)
。