2015-12-21 3 views
0

Я заходил на страницу входа и всегда получал эту ошибку. Я использовал Zend Authentication в своем коде. Вот мой контроллер для входа страницы:Zend ServiceManager ServiceManager :: get не удалось получить или создать экземпляр для AuthService

<?php 
    namespace Webin\Controller; 

    use Zend\Session\Container; 
    use Zend\View\Model\ViewModel; 
    use Webin\Controller\AppController; 
    use Webin\Form\LoginForm; 
    use Webin\Form\Filter\LoginFilter; 
    use Webin\Utility\UserPassword; 

    class LoginController extends AppController { 

     protected $storage; 
     protected $authservice; 
     var $title="abc | "; 
     public function indexAction(){  

      $request = $this->getRequest(); 

      $view = new ViewModel(); 
      $view->title = $this->title."Login"; 
      $loginForm = new LoginForm('loginForm');  
      $loginForm->setInputFilter(new LoginFilter()); 

      if($request->isPost()){ 
       $data = $request->getPost(); 
       $loginForm->setData($data); 

       if($loginForm->isValid()){    
        $data = $loginForm->getData();   

        $userPassword = new UserPassword('md5'); 
        $encyptPass = $userPassword->create($data['password']); 
        $this->getAuthService() 
        ->getAdapter() 
        ->setIdentity($data['email']) 
        ->setCredential($encyptPass); 
        $result = $this->getAuthService()->authenticate(); 

        if ($result->isValid()) 
        { 

         $session = new Container('User'); 
         $session->offsetSet('email', $data['email']); 

         $this->flashMessenger()->addMessage(array('success' => 'Login Success.')); 
         // Redirect to page after successful login 
        } 
        else 
        { 
         $this->flashMessenger()->addMessage(array('error' => 'invalid credentials.')); 
         // Redirect to page after login failure 
        } 
        return $this->redirect()->tourl('/home'); 
        // Logic for login authentication     
       } 
       else 
       { 
        $errors = $loginForm->getMessages(); 
        //prx($errors); 
       } 
      } 

      $view->setVariable('loginForm', $loginForm); 
      return $view; 
      //return $this->redirect()->toUrl('http://www.webmobi.com/auth/signin')->setStatusCode(301); 
     } 

     private function getAuthService() 
     { 
      if (! $this->authservice) { 
       $this->authservice = $this->getServiceLocator()->get('AuthService'); 
       //$this->authservice = $this->getServiceLocator()->get('Zend\Authentication\Adapter\AbstractAdapter'); 
       //$db_array = $config['db']; 
      } 
      return $this->authservice; 
     } 
        public function logoutAction() 
        { 
         $session = new Container('User'); 
         $session->getManager()->destroy(); 
         $this->getAuthService()->clearIdentity(); 
         return $this->redirect()->toUrl('/home'); 
        } 
    } 
?>   

Мой global.php выглядит следующим образом:

return array(
'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => 'mysql:dbname=webmobi;host=localhost', 
    'driver_options' => array(
     'PDO::MYSQL_ATTR_INIT_COMMAND' => 'SET NAMES \'UTF8\'' 
    ), 
), 
'service_manager' => array(
    'factories' => array(
     'Zend\Db\Adapter\Adapter' 
       => 'Zend\Db\Adapter\AdapterServiceFactory', 
     // 'Zend\Authentication\Adapter\AbstractAdapter' 
     //   => 'Zend\Authentication\AuthenticationServiceInterface', 
    ), 
), 

);

Кроме того, я пошел по аналогичным вопросам, но не смог удалить эту ошибку.

Я попробовал эти вопросы на переполнение стека, которые внешне похожи, но они не помогли .:

zf2 navigation - 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for navigation'

please help me Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Zend\Db\Adapter\Adapter

Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for db

Я новичок в ZF2. Пожалуйста помоги?

ответ

1

Похоже, что ключ конфигурации для извлечения услуги аутентификации - 'Zend\Authentication\AuthenticationService', а не 'AuthService'. Попробуйте использовать

$this->authservice = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService'); 
+0

Я пробовал, все еще показывает ту же ошибку. – Adi

+0

На самом деле, я пробовал это с этим тоже, все равно, $ this-> authservice = $ this-> getServiceLocator() -> get ('Zend \ Authentication \ Adapter \ AbstractAdapter'); – Adi

+0

Должен ли я давать различный путь? поскольку моя служба проверки подлинности находится внутри поставщика> ZendFramework> ZendFramework> library> Zend> Authentication> AuthenticationService – Adi

 Смежные вопросы

  • Нет связанных вопросов^_^