嗯,我一直在做类似的事情,但有观点。
所以我在一个捆绑包上运行了 2 个站点 - 在一个站点中,我需要查看一些我在其他站点中不需要的部分。
我设法通过配置做到了这一点。
1) 在您的每个站点 - app/config/config.yml 中,您可以定义参数。就我而言,它类似于
reviews_admin:
views:
table_favorite_block: true
table_brand_view: true
table_image_view: true
2) 然后在捆绑包中,您必须创建名为 DependencyInjection 的文件夹,其中包含 2 个文件。配置和你的捆绑扩展
class Configuration implements ConfigurationInterface
{
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('reviews_admin', 'array');
$rootNode
->children()
->arrayNode('views')
->children()
->booleanNode('table_favorite_block')->defaultTrue()->end()
->booleanNode('table_brand_view')->defaultTrue()->end()
->booleanNode('table_image_view')->defaultTrue()->end()
->end()
->end()
->end();
return $treeBuilder;
}
}
扩展
class ReviewsAdminExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$container->setParameter('reviews_admin_view', $config['views']);
}
}
我不确定这是否适合您的情况,但对我来说,这似乎是最方便的方式来管理依赖于项目的捆绑包。
您也可以尝试在 bundle 中创建一个基类(其中包含所有项目(对于导入)都相同的内容)
然后在站点端扩展它?