支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
要从框架中删除一个bundle,你应该从AppKernel::registerBundles()
方法中移除它。这个bundle一般会在$bundle
数组声明中被找到,或者在底下的“仅用于开发环境”的声明中找到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Acme\DemoBundle\AcmeDemoBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
// comment or remove this line: / 注释掉或移除此行
// $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
// ...
}
}
} |
现在Symfony已经不知道有这个bundle,你需要删除在app/config
目录下指向该bundle的任何配置信息和路由配置。
有些bundle需要你导入路由信息。在app/config/routing.yml
和app/config/routing_dev.yml
中检查对该bundle的(路由)引用。如果找到任何引用,直接删除。
有些bundle在app/config/config*.yml
文件中包含配置信息。确保从这些文件中移除相关信息。通过在配置文件中查找一个acme_demo
字符串(或bundle的任何假名,比如FOSUserBundle的fos_user
),你可以快速定位到该bundle的配置所在。
现在你已经在程序中移除了对该bundle的每一个引用,可以把bundle从文件系统删除掉了。bundle位于src/Acme/DemoBundle
目录。你应该删除此目录,已经任何“变为空的”之父目录(如,src/Acme/
)
在web/目录下删除该bundle的资源(如,对于AcmeDemoBundle来说是web/bundles/acmedemo
)。
有些bundle依赖于其他bundles,如果你删除了一两个,其余的可能难以运行。确保没有其他bundle,三方的或自己的,依赖于你即将删除的bundle。
如果一个bundle依赖于另一个,多数情况下这意味着它用到了那个bundle的一些服务。搜索bundle的假名字符串可能会帮助你找到他们(如,对于依赖AcmeDemoBundle的bundles来说要去搜索acme_demo
。)
如果一个三方bundle要依赖另一个bundle,你可以在三方bundle目录下的composer.json
文件中找到“被依赖bundle”。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。