Ну, я делал что-то похожее, но с представлениями.
Итак, у меня было 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;
}
}
Extension
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']);
}
}
Я не уверен, подойдет ли это вашей ситуации, но для меня это кажется наиболее удобным способом управления вещами в пакетах, который зависит от проектов.
Также вы можете попытаться сделать один базовый класс в комплекте (который содержит вещи, которые будут одинаковыми для всех проектов (для импорта))
А затем расширить его в сторону сайта?