Создаем структуру модуля
/module/MyUser /config doctrineconnection.local.php.dist module.config.php /src /MyUser /Entity Role.php User.php Module.phpДобавляем модуль в /config/application.config.php.
doctrineconnection.local.php.dist настройки подключения Doctrine, нужен только если они не указаны где-то за пределами модуля. Как правило настройки уже присутствуют в каталоге /config/autoload приложения.
return array( 'doctrine' => array( 'connection' => array( 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => '127.0.0.1', 'port' => '3306', 'user' => 'dbuser', 'password' => '', 'dbname' => 'mydb' ) ) ) ) );MyUser/Module.php
class Module { public function getConfig() { return include __DIR__ . '/config/module.config.php'; } public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } }MyUser/config/module.config.php
return array( 'doctrine' => array( 'driver' => array( // перектрываем настройки zfc-user-doctrine-orm // используем AnnotationDriver // и указываем путь к каталогу с классами модели 'zfcuser_entity' => array( 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 'paths' => __DIR__ . '/../src/MyUser/Entity', ), 'orm_default' => array( 'drivers' => array( 'MyUser\Entity' => 'zfcuser_entity', ), ), ), ), 'zfcuser' => array( // указываем, что ZfcUser должен использовать наш класс пользователя 'user_entity_class' => 'MyUser\Entity\User', // указываем ZfcUserDoctrineORM игнорировать сущности по-умолчанию 'enable_default_entities' => false, ), 'bjyauthorize' => array( // Using the authentication identity provider, // which basically reads the roles from the auth service's identity 'identity_provider' => 'BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider', 'role_providers' => array( // используем репозиторий объектов // для загрузки ролей в ACL 'BjyAuthorize\Provider\Role\ObjectRepositoryProvider' => array( 'object_manager' => 'doctrine.entity_manager.orm_default', // указываем наш класс для ролей 'role_entity_class' => 'MyUser\Entity\Role', ), ), ), );
Создаем классы User и Role
Проще всего скопировать шаблоны классов из модуля bjy-authorize/vendor/bjyoungblood/bjy-authorize/data/Role.php.dist
в
/module/MyUser/src/MyUser/Entity/Role.php
и
/vendor/bjyoungblood/bjy-authorize/data/User.php.dist
в /module/MyUser/src/MyUser/Entity/User.php
в этим классах везде меняем пространство имен на наше
Mynamespace на MyUser\Entity
Проверяем
> vendor/bin/doctrine-module orm:validate-schema [Mapping] OK - ... [Database] FAIL - .....Схема модели работает, осталось обновить базу данных (точнее создать таблицы)
> vendor/bin/doctrine-module orm:schema-tool:update --force Updateing database schema... Database schema updated successfully! "6" queries were executedТеперь в базе данных имеем три таблицы
role users users_rolesДобавляем роли в таблицу
INSERT INTO `role` (`id`, `parent_id`, `roleId`) VALUES (1, NULL, 'guest'), (2, 1, 'user'), (3, 2, 'moderator'), (4, 3, 'administrator');