В config.yml Symfony2 вы можете добавить «импорт», такой как:
imports:
- { resource: services.yml }
Внутри моего services.yml у меня есть:
imports:
security_bundle:
resource: @AcmeSecurityBundle/Resources/config/services.yml
Однако альтернативный способ объявления сервисов для пакета - использование DependencyInjection
Extension
, что исключает необходимость импортировать что-либо в config.yml вручную, таким образом разъединяя код.
namespace Acme\Bundle\SecurityBundle\DependencyInjection;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\Config\FileLocator;
class AcmeSecurityExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$loader = new YamlFileLoader(
$container, new FileLocator(__DIR__ . '/../Resources/config')
);
$loader->load('services.yml');
}
}
Вопрос
Это прекрасно работает для объявлений сервисов, но, например, вы хотите, чтобы пакет настраивал другой пакет, например, добавляя фильтры LiipImagineBundle
(это как AvalancheImagineBundle
):
liip_imagine:
filter_sets:
security_avatar_thumbnail:
quality: 75
filters:
thumbnail: { size: [140, 140], mode: inset }
Затем Symfony жалуется, что
Нет расширения, способного загрузить конфигурацию для "liip_imagine"
Так кто-нибудь знает, есть ли способ добавить конфигурацию для стороннего комплекта из другого комплекта, не касаясь config.yml
?