2017-01-10 6 views
1

저는 zf2가있는 프로젝트와 doctrine이있는 zfcuser 모듈을 만들고 있습니다. zfcuser를 확장하는 사용자 정의 사용자 모듈과 사용자 테이블에 대한 사용자 정의 엔티티를 작성하여 통합에 필요한 모든 변경 사항을 작성했습니다. 자신을 인증 할 때하지만 내 문제는,이 오류가 발생합니다 :zfcuser + doctrine 커스텀 사용자 엔티티

An alias "Zend\Db\Adapter\Adapter" was requested but no service could be found. 

어댑터를 변경하려고 zfcuser_user_mapper 때 발생합니다.

참고 : Doctrine으로 작업 중이므로 왜 Zend \ Db \ Adapter \ Adapter를 사용해야하는지 명확하지 않습니다.

이것은 사용자 정의 사용자 모듈의 module.php에있는 코드입니다.

public function getServiceConfig() { 
    return [ 
     'aliases' => array(
      'zfcuser_zend_db_adapter' => 'Zend\Db\Adapter\Adapter', 
     ), 
     'factories' => [ 
      'usuario_login_form' => 'Usuario\Factory\Form\Login', 
      'usuario_registro_form' => 'Usuario\Factory\Form\Register', 
      'usuario_user_service' => 'Usuario\Factory\Service\UserFactory', 
      //'usuario_user_mapper' => 'Usuario\Factory\Mapper\User', 
      'usuario_auth_service' => 'Usuario\Factory\AuthenticationService', 
      'Usuario\Authentication\Adapter\Db' => 'Usuario\Factory\Authentication\Adapter\DbFactory', 
      'Usuario\Authentication\Storage\Db' => 'Usuario\Factory\Authentication\Storage\DbFactory', 
      //'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\Adapter', 
      'usuario_user_mapper' => function ($sm) { 
       $mapper = new Mapper\User(); 
       $mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter')); 
       $mapper->setEntityPrototype(new ORM\Entity\Usuarios()); 
       $mapper->setHydrator(new \ZfcUser\Mapper\UserHydrator()); 
       return $mapper; 
      }, 
     ] 
    ]; 
} 

이 내 global.php 파일

return array(
'doctrine' => array(
    'connection' => array(
     'orm_default' => array(
      'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
      'params' => array(
       'host' => 'localhost', 
       'port' => '3306', 
       'user' => 'root', 
       'password' => 'toor', 
       'dbname' => 'deporte', 
      ) 
     ) 
    ) 
), 

)이다;

이 내 module.config.php 파일입니다

'controllers' => array(
), 
'doctrine' => array(
    'driver' => array(
     // overriding zfc-user-doctrine-orm's config 
     'usuario_entity' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'paths' => __DIR__ . '/../src/Usuario/ORM/Entity', 
     ), 
     'orm_default' => array(
      'drivers' => array(
       'Usuario\ORM\Entity' => 'usuario_entity', 
      ), 
     ), 
    ), 
), 
'zfcuser' => array(
    'auth_adapters' => array(100 => 'Usuario\Authentication\Adapter\Db'), 
    // telling ZfcUser to use our own class 
    'user_entity_class' => 'Usuario\ORM\Entity\Usuarios', 
    // telling ZfcUserDoctrineORM to skip the entities it defines 
    'enable_default_entities' => false, 
), 

나는 이미 일이 오류와 함께왔다, 도움을 주셔서 감사합니다. 정말 고마워, 내 영어 실례.

+0

당신이 zfcuser-ORM-교리를 설치 했나요 : 여기에 자세한 내용이 따를 수 zfcuser 위키를 들어

namespace Employee\Authentication\Adapter; use InvalidArgumentException; use Zend\Authentication\Result as AuthenticationResult; use Zend\Crypt\Password\Bcrypt; use Zend\ServiceManager\ServiceManager; use Zend\ServiceManager\ServiceManagerAwareInterface; use Zend\Session\Container as SessionContainer; use ZfcUser\Authentication\Adapter\AdapterChainEvent as AuthenticationEvent; use ZfcUser\Entity\UserInterface as UserEntity; use ZfcUser\Mapper\HydratorInterface as Hydrator; use ZfcUser\Mapper\UserInterface as UserMapper; use ZfcUser\Authentication\Adapter\AbstractAdapter; use ZfcUser\Options\AuthenticationOptionsInterface as AuthenticationOptions; class Db extends AbstractAdapter implements ServiceManagerAwareInterface { } 

? 그리고, 별명''zfcuser_zend_db_adapter '=>'Zend \ Db \ Adapter \ Adapter '를 제거하려고 시도 했습니까? –

답변

1

엔티티를 변경하려면 다음을 사용하십시오. config/autoload 폴더에있는 zfcuser.global.php 파일 (그렇지 않은 경우 zfcuser 모듈에서 복사 할 수 있음).

"user_entity_class"키에 대해이 글로벌 파일 검색에서

하고 자신의 실체 class.By 내가 직원 엔티티를 사용하고 것처럼

'user_entity_class' => 'ZfcUser\Entity\User', 

를 사용하여 기본 정의

'user_entity_class' => 'Employee\Entity\Employee', 

이 엔티티에서 UserInterface를 구현해야합니다.

use ZfcUser\Entity\UserInterface; 
/** 
* Employee 
* 
* @ORM\Table(name="employee") 
* @ORM\Entity(repositoryClass="Employee\Repository\EmployeeRepository") 
*/ 
class Employee implements UserInterface { 

} 

당신은 DB 어댑터를 오버라이드 (override) 할 경우

는 당신은 다음 단계를 수행해야합니다

'service_manager' => array(
     'invokables' => array(
      'ZfcUser\Authentication\Adapter\Db' => 'Employee\Authentication\Adapter\Db', 
     ), 
    ), 

당신이 확장하고 구현하기 위해 필요한이 파일에서. https://github.com/ZF-Commons/ZfcUser/wiki