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

Call to a member function findOneBy() on null

ao tentar realizar o login, recebo o seguinte erro

Fatal error: Uncaught Error: Call to a member function findOneBy() on null in E:\Curso PHP ALU\Gerenciador-de-cursos\src\Controller\RealizarLogin.php:31 Stack trace: #0 E:\Curso PHP ALU\Gerenciador-de-cursos\public\index.php(20): Alura\Cursos\Controller\RealizarLogin->processaRequisicao() #1 {main} thrown in E:\Curso PHP ALU\Gerenciador-de-cursos\src\Controller\RealizarLogin.php on line 31

meu codigo esta assim

<?php

namespace Alura\Cursos\Controller;

use Alura\Cursos\Controller\InterfaceControladorRequisicao;
use Alura\Cursos\Entity\Usuario;
use Alura\Cursos\Infra\EntityManagerCreator;
use Doctrine\ORM\EntityManager;

class RealizarLogin implements InterfaceControladorRequisicao
{
    private $repositorioDeUsuarios;

    public function __construct()
    {
        $entityManager = (new EntityManagerCreator())->getEntityManager();
        $this->repositorioDeUsusarios = $entityManager->getRepository(Usuario::class);
    }
    public function processaRequisicao(): void
    {
       $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

       if (is_null($email) ||$email ===false ) {
        echo 'Email Invalido';
        return;
       }

       $senha = filter_input(INPUT_POST,
        'senha'
       );
       $usuario = $this->repositorioDeUsuarios->findOneBy(['email' => $email]);
       if (is_null($usuario) || !$usuario->senhaEstaCorreta($senha)){
        echo "E-mail ou senha invalidos.";
       }
       header('Location:/listar-cursos');
    }
}

no filter input da senha esta sem o sanitizer pois esta listado como deprecated. obrigado

2 respostas
solução!

No construtor (__construct) você utilizou um "s" a mais na definição da propriedade "repositorioDeUsuarios" ---> "$this->repositorioDeUsusarios".

Com isso sua propriedade repositorioDeUsuarios não foi definida e ela se encontra nula para o PHP ao tentar chamar o método findOneBy.

Corrija a atribuição do valor da propriedade repositorioDeUsuarios que vai funcionar!

Tinha sido isso mesmo. Muito obrigado!