是否有修改的实体映射配置的配置文件之外主义的方法吗?

在我的标准Symfony2的应用我有一帮有一些实体束。 其中一些实体不位于标准文件夹学说的自动映射发现(如/src/Acme/DemoBundle/Entities ),但在不同的位置。

我可以很容易地使用config.yml告诉教义使用不同的位置是这样的:

doctrine: orm: auto_mapping: false mappings: AcmeDemoBundle: type: annotation prefix: Acme\DemoBundle\Entities\ dir: %kernel.cache_dir%\Acme\DemoBundle\Entities

这工作。 但说我有一个不同的映射的10捆config.yml得到非常快的臃肿。 有另一种方式,例如使用CompilerPass或通过DependencyInjection,所以我并不需要添加的所有实体在我config.yml ? 我已经调查了DoctrineBundle ,但没有运气至今。

--------------解决方案-------------

要回答自己:

最简单的方式是调整自动加载,没有必要修改设置。 在symfony在autoload.php标准发行你到另一个位置添加到registerNamespace法:

$loader->registerNamespaces(array(
[...]
'Foo' => array(__DIR__.'/../src/dirA', __DIR__.'/../src/dirB')
));

那么学说将寻找实体中的“富”的命名空间首先在DIRA,然后在DIRB如果没有找到。

您可以包括使用其他配置文件imports

# yaml
imports:
- { resource: entities.yml }

<!-- xml -->
<imports>
<import resource="enditites.xml" />
</imports>

// PHP
$loader->import('entities.php');

你甚至不必坚持一个单一的文件类型。 这是可能的一个XML配置文件导入到YAML文件,例如。

分类:制图 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.662 (s). 10 q(s)