2017-01-10 4 views
1

Ich arbeite an einem Projekt mit ZF2, und das ZFCUser Modul mit Lehre. Ich habe ein benutzerdefiniertes Benutzermodul erstellt, das zfcuser, auch eine benutzerdefinierte Entität für die Benutzertabelle, erweitert und alle notwendigen Änderungen für die Integration vornimmt. Aber mein Problem ist, wenn ich zu authentifizieren versucht, bekomme ich diesen Fehler:zfcuser + Doktrin benutzerdefinierte Benutzereinheit

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

Dies geschieht, wenn zfcuser_user_mapper den Adapter zu ändern versucht.

Hinweis: Ich bin nicht sehr klar, warum ich den Zend \ Db \ Adapter \ Adapter verwenden muss, da ich mit der Lehre arbeite.

Dies ist der Code in der Modul.php des benutzerdefinierten Benutzermoduls.

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; 
      }, 
     ] 
    ]; 
} 

Das ist mein global.php Datei

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', 
      ) 
     ) 
    ) 
), 

);

Das ist meine module.config.php Datei:

'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, 
), 

Ich danke für die Hilfe, habe ich bereits mit diesem Fehler seit Tagen. Vielen Dank und entschuldige mein Englisch.

+0

Haben Sie zfcuser-orm-Lehre installieren? Und, hast du versucht, den Alias ​​zu entfernen, 'zfcuser_zend_db_adapter '=>' Zend \ Db \ Adapter \ Adapter ','? –

Antwort

1

Wenn Sie die Entity ändern und möchten Ihre verwenden Sie dann folgenden Schritte verwenden: wenn die zfcuser.global.php-Datei, die in config/Autoload-Ordner abgelegt wird (wenn nicht, dann Sie, wenn aus zfcuser Modul kopieren.

In dieser globalen Datei Suche nach „user_entity_class“ -Taste gedrückt und definieren sie Ihre eigene Entität class.By Standard es

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

verwendet, wie ich es für Employee-Entität bin mit

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

In dieser Entität müssen Sie UserInterface implementieren.

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

} 

Wenn Sie db-Adapter außer Kraft setzen möchten, dann müssen Sie folgende Schritte tun:

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

In dieser Datei müssen Sie erweitern und Geräte.

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 
{ 

} 

Weitere Informationen Sie zfcuser Wiki hier folgen: https://github.com/ZF-Commons/ZfcUser/wiki