2012-04-18 10 views
10

Estoy tratando de generar entidades para mi aplicación Symfony 2. Las entidades serán compartidas por varios paquetes (y tal vez varias aplicaciones), y por lo tanto no quiero que pertenezcan a un paquete. Quiero que estén en la carpeta src/MyApp/Entity.Symfony2/Doctrine2: Generar entidades que están fuera de un paquete

que ya tienen el YML para mis entidades, almacenados en src/MyApp/Entidad/config/doctrine (class1.orm.yml, ...)

Estoy intentando generar las clases corresonding usando PHP la doctrina: generar: entidades tarea

Aquí es lo que tengo en mi app/config/config.yml

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    auto_mapping: false 
    mappings: 
     AppRest: 
     type: yml 
     prefix: AppRest\Entity 
     dir: %kernel.root_dir%/../src/AppRest/Entity/config/doctrine 

Este es el comando que utilizo para generar las entidades

php app/console doctrine:generate:entities AppRest/Entity 

Aquí es la excepción consigo

[InvalidArgumentException] 
Bundle "AppRest" does not exist or it is not enabled. 

Quiero hacer doctrina entiende que no estoy tratando de generar entidades tha están en un paquete. También traté de especificar la opción --path (--path = src/AppRest/Entity), pero no cambió nada.

¿Alguien puede ayudar?

Editar:

que elimina el espacio extra en mi dir, que resolvió el problema. La opción de ruta debe especificarse

+1

No creo que tendrá mucha suerte con conseguir S2 para generar y utilizar Entidades D2 fuera de un paquete. Simplemente colóquelos en su propio paquete y termine con eso. Es fácil compartir entidades en múltiples paquetes. – Cerad

+0

+1 El uso de Sf2 junto con Doctrine2 hace que aceptes la implementación de Doctrine por Sf2 ... – AlterPHP

Respuesta

3

En realidad, me faltaba un espacio en mi opción de directorio anterior. Esto funciona ahora, pero aún me pregunto si esa es la mejor manera de hacerlo.

+3

El objetivo del paquete es integrar tu código PHP con Symfony. Cuantos más códigos mueva fuera de un paquete, menos dependerá Symfony. –

+0

Bundle es la mejor manera de hacerlo. Intente formular algunas consultas antes de llegar demasiado lejos. Es posible que encuentre algunos problemas allí. – Cerad

+1

Sí, hemos vuelto a evaluar eso y elegimos una implementación con un CoreBundle, que contiene nuestras Entidades, y paquetes especializados, que se refieren a ese CoreBundle – David

-1

Cuando tenga dicho error, compruebe si ha especificado el nombre de acceso directo del paquete, no el nombre del directorio del paquete. Por ejemplo, si tiene Acme \ DemoBundle, su nombre abreviado es AcmeDemoBundle. En este caso

orm: 
    mappings: 
     DemoBundle: 
      .... 

es INCORRECTO.

la correcta es:

orm: 
    mappings: 
     AcmeDemoBundle: 
      .... 
Cuestiones relacionadas