2012-08-24 25 views
6

Tôi đã tự hỏi liệu có thể sửa đổi cấu hình nhóm từ một gói khác không. Hãy nói rằng, ví dụ, tôi đang sử dụng FOSUserBundle với cấu hình sau:Sửa đổi cấu hình nhóm từ một gói khác

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Acme\UserBundle\Entity\User 

Và bây giờ, tôi muốn thay đổi lớp người sử dụng khi tải một phần mở rộng cụ thể (các AcmeFoobarExtension). Có thể thay đổi cấu hình khi tải số AcmeFoobarExtension không? Ví dụ:

<?php 
namespace Acme\FoobarBundle\DependencyInjection; 

// use statements for dependency injection 

class FoobarExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $container->setConfiguration(
      'fos_user.user_class', 
      'Acme\FoobarBundle\Entity\User' 
     ); 
    } 
} 

Điều gì đó có thể như vậy? Hoặc đánh bại nó mục đích tiêm phụ thuộc?

EDIT: Dường như có một pull request cho Symfony 2.2 giải quyết ý tưởng/vấn đề này.

CHỈNH SỬA 2: Tính năng này hiện khả dụng trong Symfony 2.2 (với số article in the cookbook).

+0

Nếu bạn có câu trả lời, bạn có thể đăng câu trả lời cho câu hỏi của riêng bạn để khai sáng cho người khác. – neontapir

Trả lời

1

Sau khi hỏi cùng một câu hỏi trên danh sách gửi thư của người dùng Symfony (here's the question), tôi đã phát hiện ra rằng có một mở pull request cho ý tưởng này.

Dành cho phiên bản 2.2 và chưa được hợp nhất thành chương trình chính, nhưng hoạt động cuối cùng là từ 3 ngày trước, vì vậy, hãy hy vọng điều tốt nhất!

6

Cần lưu ý rằng điều này bây giờ là một tính năng chính thức của Symfony:

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

Một bó có thể thêm vào trước giá trị cấu hình các thông số cấu hình toàn cầu. Để làm điều đó, tiện ích mở rộng gói phải triển khai PrependExtensionInterface. Phương pháp prepend() sau đó có thể thêm các giá trị cấu hình chung.

Lưu ý, tuy nhiên, các giá trị có thể bị ghi đè bởi các gói khác và trong chính tệp cấu hình.

Các vấn đề liên quan