Chociaż odpowiedź OP jest poprawna, nie jest kompletna. Poniżej co zrobiłem i dlaczego.
Utwórz własną jednostkę użytkownika. Klasa abstrakcyjna jest używana dla wszystkich moich jednostek, zawiera tylko właściwość ID, obiekty pobierające/ustawiające i niektóre globalne funkcje debugowania jednostek.
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
Zawiera ten sam config jako OP's answer:
'zfcuser' => [
//Some other config
'userEntityClass' => User::class,
'EnableDefaultEntities' => false,
],
module.config.php
WAŻNE: Zastąp domyślną konfigurację encji doktryny 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',
],
],
],
W powyższym was, że zwykle po prostu mają 'driver'
i 'orm_default'
configs. Moduł ZfcUser zawiera konfigurację 'zfcuser_entity'
, ale wskazuje ją sterownikowi we własnym module. Aby nie mieć pływającego odniesienia do innego sterownika, należy go zastąpić i skierować w stronę zdefiniowanego sterownika, zdefiniowanego przez __NAMESPACE__ . '_driver'
. Ponadto w moim przykładzie używam AnnotationDriver
do czytania adnotacji, natomiast moduł ZfcUser używa XmlDriver
.ZfcUser moduł konfiguracyjny poniżej
Jest to oryginalny config, nadpisane w powyższym przykładzie
'zfcuser_entity' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\XmlDriver',
'paths' => __DIR__ . '/xml/zfcuser'
),
Ta konfiguracja pozwala w pełni korzystać z własnego podmiotu, ale nadal korzystać z modułu ZfcUser.
W moim przypadku mogę użyć własnego AbstractActionController
z moimi własnymi zapisami CRUD, które oczekują dziecka o numerze AbstractEntity
. Oszczędza to dużo pisania/myślenia;)
Cześć timdev, właśnie tego obecnie próbuję. Mam glob plik konfiguracyjny w /config/autoload/ZfcUserDoctrineORM.global.php 'tablicy powrotnej ( 'zfcuser' => array ( 'UserEntityClass' => '\ WriplCom \ Jednostka \ użytkownik', ) ); "Mam przeczucie, że moim problemem jest albo mój plik konfiguracyjny, albo jestem ambitny, próbując uzyskać narzędzie cli doktryny do wygenerowania schematu, albo jedno i drugie. – briangallagher