Error de ZendFatal: no se encontró la clase 'Zend \ Ldap \ Ldap'

Entonces, estoy tratando de hacer una autenticación Ldap, siguiendo los documentos en

https://zf2.readthedocs.org/en/latest/user-guide/skeleton-application.html

Acabo de reemplazar el módulo 'Álbum' con un módulo 'Auth' y uso el código de muestra para la autenticación Ldap

https://zf2.readthedocs.org/en/latest/modules/zend.authentication.adapter.ldap.html

pero recibo este error donde Zend no puede encontrar la clase Ldap cuando envío el formulario con los datos de inicio de sesión.

Error fatal: la clase 'Zend \ Ldap \ Ldap' no se encuentra en C: \ wamp \ www \ sade \ vendor \ zendframework \ zend-authentication \ src \ Adapter \ Ldap.php en la línea 139

Estoy usando composer, para el marco zend y el atuoloader para los módulos, ya tengo errores relacionados con una clase que no se encuentra pero mis propias clases, no clases de Zend como Ldap.

Gracias.

Aquí está la estructura de los archivos y carpetas.

/module
     /Auth
         /config
            module.config.php
         /src
             /Auth
                 /Controller
                    AuthController.php
                 /Form
                    AuthForm.php
                 /Model
                 Auth.php
         /view
             /auth
                 /auth
                    index.php
        Module.php

Y el código principal del módulo:

module.config.php

 return array(
 'controllers' => array(
     'invokables' => array(
         'Auth\Controller\Auth' => 'Auth\Controller\AuthController',
     ),
 ),
'router' => array(
     'routes' => array(
         'auth' => array(
             'type'    => 'segment',
             'options' => array(
                 'route'    => '/auth[/:action][/:id]',
                 'constraints' => array(
                     'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                     'id'     => '[0-9]+',
                 ),
                 'defaults' => array(
                     'controller' => 'Auth\Controller\Auth',
                     'action'     => 'index',
                 ),
             ),
         ),
     ),
 ),

 'view_manager' => array(
     'template_path_stack' => array(
         'auth' => __DIR__ . '/../view',
     ),
 ),
);

AuthController.php

//AuthController.php
namespace Auth\Controller;

 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\ViewModel;

use Zend\Authentication\AuthenticationService;
use Zend\Authentication\Adapter\Ldap as AuthAdapter;
use Zend\Config\Reader\Ini as ConfigReader;
use Zend\Config\Config;
use Zend\Log\Logger;
use Zend\Log\Writer\Stream as LogWriter;
use Zend\Log\Filter\Priority as LogFilter;

use Auth\Model\Auth;  
use Auth\Form\AuthForm; 

 class AuthController extends AbstractActionController
 {
     public function indexAction()
     {
     $form = new AuthForm();
     $form->get('submit')->setValue('index');
     $request = $this->getRequest();
     if ($request->isPost()) {
        $Auth = new Auth();
        $Auth->username = $this->getRequest()->getPost('username');
        $Auth->password = $this->getRequest()->getPost('password');


        $AuthenticationService = new AuthenticationService();

        $configReader = new ConfigReader();
        $configData = $configReader->fromFile('config/ldap-config.ini');
        $config = new Config($configData, true);
        $log_path = $config->production->ldap->log_path;
        //die($log_path)."--";
        $options = $config->production->ldap->toArray();
        unset($options['log_path']);

        $adapter = new AuthAdapter($options,
                                   $Auth->username,
                                   $Auth->password);

        $form->setInputFilter($Auth->getInputFilter());
        $form->setData($request->getPost());
        $result = $AuthenticationService->authenticate($adapter);

            if ($log_path) {
                    $messages = $result->getMessages();

                    $logger = new Logger;
                    $writer = new LogWriter($log_path);

                    $logger->addWriter($writer);

                    $filter = new LogFilter(Logger::DEBUG);
                    $writer->addFilter($filter);

                    foreach ($messages as $i => $message) {
                        if ($i-- > 1) { // $messages[2] and up are log messages
                            $message = str_replace("\n", "\n  ", $message);
                            $logger->debug("Ldap: $i: $message");
                        }
                    }
                }                 
            //return $this->redirect()->toRoute('login');
     }
     return array('form' => $form);

 }

 public function LoginAction()
 {
 }
 public function LogoutAction()

 {
 }
 }

AuthForm.php

//AuthForm.php

namespace Auth\Form;

 use Zend\Form\Form;

 class AuthForm extends Form
 {
     public function __construct($name = null)
     {
     // we want to ignore the name passed
     parent::__construct('auth');

     $this->add(array(
         'name' => 'username',
         'type' => 'Text',
         'options' => array(
             'label' => 'Nombre de usuario',
         ),
     ));
     $this->add(array(
         'name' => 'password',
         'type' => 'Password',
         'options' => array(
             'label' => 'Contraseña',
         ),
     ));
     $this->add(array(
         'name' => 'submit',
         'type' => 'Submit',
         'attributes' => array(
             'value' => 'Iniciar sesión',
             'id' => 'submitbutton',
         ),
     ));
 }
 }

Auth.php (dentro de la carpeta Modelo, para los filtros que pueda implementar más adelante)

namespace Auth\Model;

 // Add these import statements
 use Zend\InputFilter\InputFilter;
 use Zend\InputFilter\InputFilterAwareInterface;
 use Zend\InputFilter\InputFilterInterface;

 class Auth implements InputFilterAwareInterface
 {
 public $username;
 public $password;
 protected $inputFilter;                       // <-- Add this variable

 public function exchangeArray($data)
 {
     $this->username = (isset($data['username'])) ? $data['username'] : null;
     $this->password  = (isset($data['password']))  ? $data['password']  : null;
 }

 // Add content to these methods:
 public function setInputFilter(InputFilterInterface $inputFilter)
 {
     throw new \Exception("Not used");
 }

 public function getInputFilter()
 {
     if (!$this->inputFilter) {
         $inputFilter = new InputFilter();

         $inputFilter->add(array(
             'name'     => 'username',
             'required' => true,
             'filters'  => array(
                 array('name' => 'StripTags'),
                 array('name' => 'StringTrim'),
             ),
             'validators' => array(
                 array(
                     'name'    => 'StringLength',
                     'options' => array(
                         'encoding' => 'UTF-8',
                         'min'      => 1,
                         'max'      => 100,
                     ),
                 ),
             ),
         ));

         $inputFilter->add(array(
             'name'     => 'password',
             'required' => true,
             'filters'  => array(
                 array('name' => 'StripTags'),
                 array('name' => 'StringTrim'),
             ),
             'validators' => array(
                 array(
                     'name'    => 'StringLength',
                     'options' => array(
                         'encoding' => 'UTF-8',
                         'min'      => 1,
                         'max'      => 100,
                     ),
                 ),
             ),
         ));

         $this->inputFilter = $inputFilter;
     }

     return $this->inputFilter;
 }
}

Y Module.php, no creo que index.phtml deba publicarse aquí.

 namespace Auth;

 use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
 use Zend\ModuleManager\Feature\ConfigProviderInterface;

 class Module implements AutoloaderProviderInterface, ConfigProviderInterface
 {
 public function getAutoloaderConfig()
 {

 }

 public function getConfig()
 {
     return include __DIR__ . '/config/module.config.php';
 }
 }

Respuestas a la pregunta(2)

Su respuesta a la pregunta