Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Variável indefinida em UsuarioController.php

Não sei onde possa estar o erro. Poderiam me ajudar

Notice: Undefined variable: this­ in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18

Notice: Trying to get property 'request' of non-object in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18

Warning: Use of undefined constant ­ - assumed '­' (this will throw an Error in a future version of PHP) in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18

Warning: A non-numeric value encountered in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18

Fatal error: Uncaught Error: Call to undefined function Estoque\Controller\getPost() in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php:18 Stack trace: #0 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(82): Estoque\Controller\UsuarioController->loginAction() #1 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) #2 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #3 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #4 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractContro in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18

=============================

Segue codigo

UsuárioController.php

<?php
    namespace Estoque\Controller;

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

    class UsuarioController extends AbstractActionController{

        public function indexAction(){

            return new ViewModel();
        }

        public function loginAction(){

            if($this->request->isPost()){

                $dados = $this­->request-­>getPost();   ==========> linha 18  do erro
                $authService = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService');
                $authAdapter = $authService­->getAdapter();

                $authAdapter­->setIdentityValue($dados['email']);
                $authAdapter­->setCredentialValue($dados['senha']);

                $authResult = $authService->authenticate();

                if($authResult­->isValid()) {
                    return $this->redirect()->toUrl('/Produto/cadastrar');
                }

                $this­->flashMessenger()-­>addErrorMessage("Login ou senha inválidos");

                return $this->redirect()->toUrl('/Usuario/index');

            }else{
                return $this->redirect()->toUrl('/Usuario/index');
            }
        }
    }

?>

======================= module.config.php

'authentication' => array(
            'orm_default' => array (
                'object_manager' => 'Doctrine\ORM\EntityManager',
                'identity_class' => 'Estoque\Entity\Usuario',
                'identity_property' => 'email',
                'credential_property' => 'senha',

            ),
         ),  

===================== Module.php

 public function getServiceConfig() {
        return array(
            'factories' => array(
                'Zend\Authentication\AuthenticationService' => function($serviceManager) {
                    return $serviceManager->get('doctrine.authenticationservice.orm_default');
                 }
            )
         );
    }
4 respostas

Oi Henrique, tudo bom?

Realmente, seu código parece bater com o da explicação.

Dei uma procurada aqui em com acessar os dados Post de uma requisição no zend, e na maioria dos casos a galera usa o getRequest ao invés de acessar o atributo request diretamente. Tenta algo como:

$dados = $this->getRequest()->getPost();

Se não rolar, compartilha com a gente o resultado dos dois dumps a seguir:

var_dump($request);die();
$dados = $this->request->getPost();

Além disso, qual versão do zendo você está usando?

Abraço!

solução!

Mesmo erro com getRequest()

Zend versão 2.4.13 PHP versão 7.2.9

usando request

'''

public function loginAction(){

        if($this->request->isPost()){

            var_dump($request);die();
            $dados = $this->request->getPost();

            $authService = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService');
            $authAdapter = $authService­->getAdapter();

            $authAdapter­->setIdentityValue($dados['email']);
            $authAdapter­->setCredentialValue($dados['senha']);

            $authResult = $authService->authenticate();

            if($authResult­->isValid()) {
                return $this->redirect()->toUrl('/Produto/cadastrar');
            }

            $this­->flashMessenger()-­>addErrorMessage("Login ou senha inválidos");

            return $this->redirect()->toUrl('/Usuario/index');

        }else{
            return $this->redirect()->toUrl('/Usuario/index');
        }
    }
}

'''

Resultado

Notice: Undefined variable: request in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18 NULL

Usando getRequest()

''' public function loginAction(){

        if($this->request->isPost()){

            var_dump($request);die();
            $dados = $this->getRequest()->getPost();

            $authService = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService');
            $authAdapter = $authService­->getAdapter();

            $authAdapter­->setIdentityValue($dados['email']);
            $authAdapter­->setCredentialValue($dados['senha']);

            $authResult = $authService->authenticate();

            if($authResult­->isValid()) {
                return $this->redirect()->toUrl('/Produto/cadastrar');
            }

            $this­->flashMessenger()-­>addErrorMessage("Login ou senha inválidos");

            return $this->redirect()->toUrl('/Usuario/index');

        }else{
            return $this->redirect()->toUrl('/Usuario/index');
        }
    }
}

'''

Resultado

Notice: Undefined variable: request in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 18 NULL

Reiniciei o computador, não sei explicar o motivo, mas o erro anterior parou, porém surgiu outro

Notice: Undefined variable: authAdapter­ in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 24

Fatal error: Uncaught Error: Call to a member function setIdentityValue() on null in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php:24 Stack trace: #0 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(82): Estoque\Controller\UsuarioController->loginAction() #1 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) #2 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #3 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #4 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractControlle in C:\sistemas\Estoque\Skeleton-Application\module\Estoque\src\Estoque\Controller\UsuarioController.php on line 24

''' public function loginAction(){

        if($this->request->isPost()){

            $dados = $this->request->getPost();

            $authService = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService');

            $authAdapter = $authService->getAdapter();

            $authAdapter­->setIdentityValue($dados['email']);   ======> linha 24
            $authAdapter­->setCredentialValue($dados['senha']);

            $authResult = $authService->authenticate();

            if($authResult­->isValid()) {
                return $this->redirect()->toUrl('/Index/cadastrar');
            }

            $this­->flashMessenger()-­>addErrorMessage("Login ou senha inválidos");

            return $this->redirect()->toUrl('/Usuario/index');

        }else{
            return $this->redirect()->toUrl('/Usuario/index');
        }
    }

'''

Deixou de gerar o erro