ZFCUSER + 原则自定义用户实体



我正在用 zf2 和 zfcuser 模块做一个带有 doctrine 的项目。我创建了一个自定义用户模块来扩展 zfcuser,也是用户表的自定义实体,并为集成进行了所有必要的更改。但我的问题是在尝试验证自己时,出现此错误:

An alias "ZendDbAdapterAdapter" was requested but no service could be found.

当zfcuser_user_mapper尝试更改适配器时,会发生这种情况。

注意:我不太清楚为什么我需要使用 Zend \ Db \ 适配器 \ 适配器,因为我正在研究学说。

这是自定义用户模块的模块.php中的代码。

    public function getServiceConfig() {
    return [
        'aliases' => array(
            'zfcuser_zend_db_adapter' => 'ZendDbAdapterAdapter',
        ),
        'factories' => [
            'usuario_login_form' => 'UsuarioFactoryFormLogin',
            'usuario_registro_form' => 'UsuarioFactoryFormRegister',
            'usuario_user_service' => 'UsuarioFactoryServiceUserFactory',
            //'usuario_user_mapper' => 'UsuarioFactoryMapperUser',
            'usuario_auth_service' => 'UsuarioFactoryAuthenticationService',
            'UsuarioAuthenticationAdapterDb' => 'UsuarioFactoryAuthenticationAdapterDbFactory',
            'UsuarioAuthenticationStorageDb' => 'UsuarioFactoryAuthenticationStorageDbFactory',
            //'ZendDbAdapterAdapter' => 'ZendDbAdapterAdapter',
            'usuario_user_mapper' => function ($sm) {
                $mapper = new MapperUser();
                $mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
                $mapper->setEntityPrototype(new ORMEntityUsuarios());
                $mapper->setHydrator(new ZfcUserMapperUserHydrator());
                return $mapper;
            },
        ]
    ];
}

这是我的全局.php文件

return array(
'doctrine' => array(
    'connection' => array(
        'orm_default' => array(
            'driverClass' => 'DoctrineDBALDriverPDOMySqlDriver',
            'params' => array(
                'host' => 'localhost',
                'port' => '3306',
                'user' => 'root',
                'password' => 'toor',
                'dbname' => 'deporte',
            )
        )
    )
),

);

这是我的模块.php文件:

    'controllers' => array(
),
'doctrine' => array(
    'driver' => array(
        // overriding zfc-user-doctrine-orm's config
        'usuario_entity' => array(
            'class' => 'DoctrineORMMappingDriverAnnotationDriver',
            'paths' => __DIR__ . '/../src/Usuario/ORM/Entity',
        ),
        'orm_default' => array(
            'drivers' => array(
                'UsuarioORMEntity' => 'usuario_entity',
            ),
        ),
    ),
),
'zfcuser' => array(
    'auth_adapters' => array(100 => 'UsuarioAuthenticationAdapterDb'),
    // telling ZfcUser to use our own class
    'user_entity_class' => 'UsuarioORMEntityUsuarios',
    // telling ZfcUserDoctrineORM to skip the entities it defines
    'enable_default_entities' => false,
),

我感谢您的帮助,我已经遇到此错误好几天了。非常感谢,请原谅我的英语。

如果要更改实体并要使用实体,请使用以下步骤:如果 zfcuser.global.php 文件放置在 config/autoload 文件夹中(如果没有,那么您可以从 zfcuser 模块复制 if。

在此全局文件中,搜索"user_entity_class"键并定义自己的实体类。默认情况下,它使用

'user_entity_class' => 'ZfcUserEntityUser',

就像我将其用于员工实体一样

'user_entity_class' => 'EmployeeEntityEmployee',

在此实体中,您需要实现用户界面。

use ZfcUserEntityUserInterface;
/**
 * Employee
 *
 * @ORMTable(name="employee")
 * @ORMEntity(repositoryClass="EmployeeRepositoryEmployeeRepository")
 */
class Employee implements UserInterface {
}

如果要覆盖数据库适配器,则需要执行以下步骤:

'service_manager' => array(
        'invokables' => array(
            'ZfcUserAuthenticationAdapterDb' => 'EmployeeAuthenticationAdapterDb',
        ),
    ),

在此文件中,您需要扩展和实现。

namespace EmployeeAuthenticationAdapter;
use InvalidArgumentException;
use ZendAuthenticationResult as AuthenticationResult;
use ZendCryptPasswordBcrypt;
use ZendServiceManagerServiceManager;
use ZendServiceManagerServiceManagerAwareInterface;
use ZendSessionContainer as SessionContainer;
use ZfcUserAuthenticationAdapterAdapterChainEvent as AuthenticationEvent;
use ZfcUserEntityUserInterface as UserEntity;
use ZfcUserMapperHydratorInterface as Hydrator;
use ZfcUserMapperUserInterface as UserMapper;
use ZfcUserAuthenticationAdapterAbstractAdapter;
use ZfcUserOptionsAuthenticationOptionsInterface as AuthenticationOptions;
class Db extends AbstractAdapter implements ServiceManagerAwareInterface
{
}

欲了解更多信息,您可以在此处关注zfcuser wiki:https://github.com/ZF-Commons/ZfcUser/wiki

相关内容

  • 没有找到相关文章

最新更新