2012-01-20 7 views
9

Nella mia app Symfony2 standard ho un sacco di pacchetti con alcune entità. Alcune di queste entità non si trovano nella cartella standard rilevata dall'automapp della dottrina (ad esempio /src/Acme/DemoBundle/Entities) ma in una posizione diversa.C'è un modo per modificare la configurazione del mapping di entità per la doctrina al di fuori del file di configurazione?

ho potuto usare facilmente config.yml per dire la dottrina di utilizzare una posizione diversa come questo:

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

Questo funziona. Ma dire che sto avendo 10 bundle con una mappatura diversa, lo config.yml si gonfia molto velocemente. C'è un altro modo, ad es. con un CompilerPass o tramite DependencyInjection, quindi non ho bisogno di aggiungere tutte le entità nel mio config.yml? Ho già esaminato lo DoctrineBundle, ma finora non ho avuto fortuna.

+0

Stavo cercando esattamente come configurare i mapping in config.yml. Grazie :) – flu

risposta

2

Per rispondere a me stesso:

il modo più semplice è quello di regolare il caricamento automatico, non v'è alcuna necessità di modificare le impostazioni. In distribuzione standard di Symfony in autoload.php si deve aggiungere un'altra posizione al registerNamespace metodo:

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

Doctrine quindi cercare le entità nello spazio dei nomi "Foo" first in Dira e poi in DIRB se non trovato.

0

È possibile includere altri file di configurazione utilizzando imports

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

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

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

Non hanno nemmeno bisogno di attenersi a un unico tipo di file. Ad esempio, è possibile importare un file di configurazione xml in un file yaml.

+0

Ma devo comunque aggiungere la configurazione manualmente. Sto cercando un modo programmaticamente. – acme

Problemi correlati