Trong config.yml Symfony2 của bạn có thể thêm một "nhập khẩu" như:Symfony2: Có thể thêm cấu hình cho một gói khác qua DependencyInjection không?
imports:
- { resource: services.yml }
Bên services.yml tôi sau đó có:
imports:
security_bundle:
resource: @AcmeSecurityBundle/Resources/config/services.yml
Tuy nhiên các cách khác để khai báo các dịch vụ cho một bó bằng cách sử dụng DependencyInjection
Extension
do đó loại bỏ nhu cầu nhập bất kỳ thứ gì vào config.yml theo cách thủ công, do đó hãy tách mã.
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');
}
}
Các Câu hỏi này hoạt động tốt cho tờ khai dịch vụ nhưng nói ví dụ bạn muốn có một bó để cấu hình gói khác chẳng hạn như thêm LiipImagineBundle
(nó giống như AvalancheImagineBundle
) bộ lọc:
liip_imagine:
filter_sets:
security_avatar_thumbnail:
quality: 75
filters:
thumbnail: { size: [140, 140], mode: inset }
Symfony sau đó than phiền rằng
Không có tiện ích mở rộng nào có thể tải cấu hình cho r "liip_imagine"
Vậy có ai biết cách thêm cấu hình cho gói của bên thứ ba từ gói khác mà không chạm vào config.yml
không?
Tôi cần điều này cho FOSUserBundle! Bây giờ tôi có thể tạo tiện ích mở rộng của mình trên đó và tải trước nó bằng cấu hình của tôi. Ví dụ: $ container-> prependExtensionConfig ('fos_user', mảng ( 'db_driver' => 'orm' )); –