2012-01-20 6 views
9

W mojej standardowej aplikacji Symfony2 mam pakiet wiązek z niektórymi elementami. Niektóre z tych jednostek nie znajdują się w standardowym folderze, o którym dowiaduje się automatyzacja doktryny (np. /src/Acme/DemoBundle/Entities), ale w innej lokalizacji.Czy istnieje sposób modyfikowania konfiguracji odwzorowania encji dla doktryny poza plikiem konfiguracyjnym?

Mógłbym łatwo korzystać config.yml powiedzieć doktrynę użyć inną lokalizację tak:

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

To działa. Ale mówię, że mam 10 pakietów z innym mapowaniem, że config.yml bardzo szybko się rozdęty. Czy jest inny sposób, np. z CompilerPass lub DependencyInjection, więc nie muszę dodawać wszystkich podmiotów do mojego config.yml? Sprawdziłem już wersję DoctrineBundle, ale do tej pory nie miałem szczęścia.

+0

Szukałem dokładnie, jak skonfigurować mapowania w pliku config.yml. Dziękuję :) – flu

Odpowiedz

2

Aby odpowiedzieć sobie:

najprostszym sposobem jest dostosowanie automatyczne ładowanie, nie ma potrzeby, aby zmienić ustawienia. W standardowej dystrybucji Symfony w autoload.php trzeba dodać inną lokalizację do registerNamespace-metody:

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

Doctrine następnie szukać podmiotów w przestrzeni nazw „foo” pierwszy w Díra a następnie w dirB jeśli nie znaleziono.

0

Możesz dołączyć inne pliki konfiguracyjne za pomocą imports

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

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

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

Nawet nie trzeba trzymać się jednego typu plików. Na przykład można zaimportować plik konfiguracyjny xml do pliku yaml.

+0

Ale muszę jeszcze ręcznie dodać config. Szukam programowo. – acme

Powiązane problemy