Aunque la respuesta del OP es correcta, no está completa. Debajo de lo que hice y por qué.
Crear una propia entidad de usuario. AbstractEntity es uno utilizado para todas mis Entidades, contiene solo la propiedad ID, getters/setter y alguna funcionalidad global para la depuración de Entidades.
User.php
use Doctrine\ORM\Mapping as ORM;
use Keet\Mvc\Entity\AbstractEntity;
use ZfcUser\Entity\UserInterface;
/**
* Entity Class representing a post of our User module.
*
* @ORM\Entity
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="Keet\User\Repository\UserRepository")
* @ORM\HasLifecycleCallbacks
*/
class User extends AbstractEntity implements UserInterface
{
/**
* @var string
* @ORM\Column(name="username", type="string", length=255, unique=true, nullable=false)
*/
protected $username;
/**
* @var string
* @ORM\Column(name="email", type="string", length=255, unique=true, nullable=false)
*/
protected $email;
/**
* @var string
* @ORM\Column(name="display_name", type="string", length=255, nullable=false)
*/
protected $displayName;
/**
* @var string
* @ORM\Column(name="`password`", type="string", length=255, nullable=false)
*/
protected $password;
/**
* @var int
* @ORM\Column(name="state", type="integer", length=3, nullable=false)
*/
protected $state = 1;
// Getters/Setters
}
zfcuser.config.php
contiene la misma configuración como OP's answer:
'zfcuser' => [
//Some other config
'userEntityClass' => User::class,
'EnableDefaultEntities' => false,
],
module.config.php
IMPORTANTE: ¡Sobrescriba la configuración predeterminada de la entidad de doctrina de zfcuser!
'doctrine' => [
'orm_autoload_annotations' => true,
'driver' => [
__NAMESPACE__ . '_driver' => [
'class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver',
'cache' => 'array',
'paths' => [
__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src'
. DIRECTORY_SEPARATOR . 'Entity',
]
],
'orm_default' => [
'drivers' => [
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver',
'ZfcUser\Entity' => __NAMESPACE__ . '_driver'
],
],
'zfcuser_entity' => [ // Section overwrites the default config for location of Annotation. Original found
// in vendor ZfcUserDoctrineModule /config/xml/zfcuser/ZfcUser.Entity.User.dcm.xml
'class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver',
'paths' =>
__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src'
. DIRECTORY_SEPARATOR . 'Entity',
],
],
],
En lo anterior habría que normalmente sólo tienen el 'driver'
y 'orm_default'
configuraciones. El módulo ZfcUser contiene la configuración 'zfcuser_entity'
, pero lo apunta al controlador dentro de su propio módulo. Para no tener una referencia flotante a un controlador diferente, sobrescríbalo y apúntelo hacia su propio controlador definido, definido por __NAMESPACE__ . '_driver'
. Además, en mi ejemplo uso el AnnotationDriver
para leer la anotación, mientras que el módulo ZfcUser usa el XmlDriver
.ZfcUser módulo de configuración a continuación
Esta es la configuración original, sobrescrito en el ejemplo anterior
'zfcuser_entity' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\XmlDriver',
'paths' => __DIR__ . '/xml/zfcuser'
),
Esta configuración le permite utilizar plenamente su propia entidad, pero todavía utilizan el módulo ZfcUser.
En mi caso puedo usar mi propio AbstractActionController
con mis acciones autocríticas CRUD, que esperan un hijo de AbstractEntity
. Esto ahorra una gran cantidad de escritura/pensamiento;)
Hola Timdev, eso es lo que estoy intentando en la actualidad. Tengo un archivo de configuración glob en /config/autoload/ZfcUserDoctrineORM.global.php 'return array ( 'zfcuser' => array ( 'UserEntityClass' => '\ WriplCom \ Entity \ User', ), ); 'Tengo la sensación de que mi problema es mi archivo de configuración, o estoy tratando de obtener la herramienta cli de doctrina para generar el esquema, o ambos. – briangallagher