2015-11-08 89 views
0

我有一個應用程序,其中業務邏輯被拆分爲捆綁以便於管理和擴展。每個軟件包提供其實體,服務,模板(如果是UI軟件包)等。如何從軟件包的本地配置文件添加全局配置?

實體應註冊到ORM以參與命令,如./bin/console doctrine:schema:update

我對我的包使用自定義文件夾結構,所以我沒有任何根實體文件夾在每個包中。所以,我必須使用doctrine.orm.mappings配置密鑰註冊實體。

我希望每個bundle自己註冊它的實體,而不用把它們引用到全局配置中。

因此,我在每個包中使用了PrependExtensionInterface。我prepend()方法是這樣的:

/** 
* Allow an extension to prepend the extension configurations. 
* 
* @param ContainerBuilder $container 
*/ 
public function prepend(ContainerBuilder $container) 
{ 
    $config = Yaml::parse(file_get_contents(__DIR__.'/../Resources/config/config.yml')); 

    foreach ($config as $key => $configuration) { 
     $container->prependExtensionConfig($key, $configuration); 
    } 
} 

我.yml看起來是這樣的:

doctrine: 
    orm: 
     mappings: 
      thiris_cart_logic_auth_user: 
       type: annotation 
       dir: %kernel.root_dir%/../src/ThirisCart/Logic/AuthBundle/User/Model 
       alias: Category 
       prefix: ThirisCart\Logic\AuthBundle\User\Model 
       is_bundle: false 

它的工作原理,除了一件事非常好。 看起來,就像我從.yml讀取的配置沒有驗證正確性。它只是合併到全局配置中而沒有進一步的問題。

那麼,問題是如何驗證它呢?

回答

相關問題