fosuserbundle symfony 3
Utilice FOSUserBundle en relaciĆ³n con las entidades basadas en yml (1)
El problema que describes proviene de mezclar formatos de configuración (yaml y supongo anotaciones). Puede solucionarlo fácilmente anulando las anotaciones en sus modelos y reemplazándolas con archivos yaml como lo haría en sus propios modelos.
Lamentablemente, FOSUserBundle-docs solo le muestra cómo usar las anotaciones, por lo que aquí se presenta una rápida transformación en formato yaml cuando su X / MyBundle / Entity / User amplía UserEntity de FOSUSerBundle:
X/MyBundle/Entity/User:
type: entity
table: fos_user
id:
id:
type: integer
strategy: { generator: "AUTO" }
El resto del material está a cargo de FOSUserBundle, ya que BaseModel es una superclase mapeada y ya describe las cosas en el User.orm.xml
, pero también podrías reemplazar los valores existentes o agregar valores adicionales tal como lo harías. con tus propios modelos
Si no utiliza anotaciones en su aplicación, es posible que también desee deshabilitarlas en su app/config/config.yml
para evitar efectos secundarios.
Comencé un proyecto Symfony2 desde cero, donde luego instalé FOSUserBundle .
Luego, escribí (en realidad, generé con ORM Designer) algunas entidades que necesitan tener relaciones entre ellas, y con la entidad Usuario.
Tengo Items
pertenecen a los Users
, Collections
pertenecen a los Users
que agrupan Items
, y así sucesivamente.
Como utilicé FOSUserBundle, solo tengo una clase de usuario básica ( https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md , paso 3a) definida mediante anotaciones, sin carpeta config/doctrine
y sin Archivo User.yml
en él.
Luego creé la MyBundle/Resources/config/doctrine
y agregué los archivos yml
mencionados anteriormente.
Cuando trato de generar las entidades con la herramienta de línea de comandos todo funciona bien: creará las entidades de mis archivos yml.
Sin embargo, en este punto, al tratar de cargar en los navegadores, la URL donde el inicio de sesión funcionó (cuando solo tenía instalado el FOSUserBundle ) generará este error:
MappingException: no se encontró ningún archivo de asignación llamado ''/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml'' para la clase ''X / MyBundle / Entity / User''.
Las siguientes acciones, como generar la lógica CRUD, no funcionarán mientras tenga un archivo *.orm.ym
l en la carpeta config/doctrine
. Si los elimino, la generación CRUD funcionará, pero la generación de tablas mysql reales no funcionará.
Hacer malabares con estos me lleva a un punto en el que también puedo obtener las tablas, pero la aplicación no funciona si trato de usar cualquiera de las URL donde está involucrado el CRUD recién generado porque las entidades están basadas en yml ( que elimino para que las cosas "funcionen") no tendrá ningún conocimiento de mapeo.
¿Es esto intrínsecamente incorrecto? ¿Tener entidades basadas en yml en relación con una entidad de usuario basada en FOSUserBundle y aún así poder obtener las bonitas herramientas de generación de línea de comandos?