[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Boa noite Carlos, conforme as alterações/refatoração do Service, que foram aplicadas nesta aula agora, quando chamo o metodo index da controller, retorna o erro: Call to a member function getAll() on null

public function index(Request $request)//injeção de dependencias do laravel
{
//$support = new Support();
// $fornecedores = $fornecedor->all();
$fornecedores = $this->service->getAll($request->filter);

return view('admin/fornecedores/index', compact('fornecedores'));

}
 
Manager Carlos Ferreira 29/01/2025

Injetou a classe de serviço no construtor?

Compartilhe o código completo comigo, pelo GitHub

Carlos Ferreira
Criador Daniel Luis Camargo 29/01/2025

sim injetei a classe de serviço FornecedorService.php no construtor, FornecedorController.php, segue o codigo abaixo:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;

use App\Http\Requests\StoreUpdateFornecedor;

use App\Models\Fornecedor;

use App\Services\FornecedorService;

use Illuminate\Http\Request;

class FornecedorController extends Controller

{

    public function __construct(

        protected FornecedorService $service

 

 ){}

public function index(Request $request)

{

        $fornecedores = $this->service->getAll($request->filter);

        return view('admin/fornecedores/index', compact('fornecedores'));

}

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

foi criado a pasta em app/Services/FornecedorService.php

FornecedorService.php...

namespace App\Services;

use stdClass;

class FornecedorService

{

   protected $repository;

   public function __construct()

    {

    }

    public function getAll(string $filter = null): array <---Implicitly nullable parameters are deprecated.---> aqui deprecated

    {

        return $this->repository->getAll($filter);

    }

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

resolvi o problema deprecated da classe FornecedorService.php

add ' '  no null

public function getAll(string $filter = 'null'): array
{
return $this->repository->getAll($filter);

}
Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

agora ao acessar: http://localhost:8989/fornecedores

dá esse erro na controller

App\Services\FornecedorService::getAll(): Argument #1 ($filter) must be of type string, null given, 

called in /var/www/app/Http/Controllers/Admin/FornecedorController.php on line 22

 

public function index(Request $request)
{
// dd($request)->all();
$fornecedores = $this->service->getAll($request->filter); //aqui erro

return view('admin/fornecedores/index', compact('fornecedores'));

}

 

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Estou travado aqui Carlos não consigo procegir, peço encarecidamente ajuda, desde já obrigado.

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

prosseguir*

este é meu github esta tudo commit até agora: https://github.com/dluiscamargo/Daniel--laravel-10.git

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Eu tambem senti a falta de vc rodar o projeto local para testar o nosso caso de uso com a implementação do Service e na proxima aula 20 já começa com DTO e tambem não roda o projeto, estou tento dificudade para prossegir e entender os patherners, desde já agradeço sua atenção, obrigado.

Daniel Luis Camargo
Manager Carlos Ferreira 29/01/2025

Use o operador ? para indicar que pode ser string, ou null

public function getAll(?string $filter): array

 

Ao chamar, pegue assim: getAll($request->filter ?? null)

Carlos Ferreira
Criador Daniel Luis Camargo 29/01/2025

public function getAll(?string $filter): array

FornecedorService.php

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Ao chamar, pegue assim: getAll($request->filter ?? null)

FornecedorController.php

 

public function index(Request $request)
{
// dd($request)->all();
$fornecedores = $this->service->getAll($request->filter ?? null);

return view('admin/fornecedores/index', compact('fornecedores'));

} 

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

mesmo com as duas alterações segue o problema:

http://localhost:8989/fornecedores

retorno:

 

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Call to a member function getAll() on null

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

Bom dia Carlos, alguma solução para o problema? segui arrisca as aulas, sera que é possivel eu aprender a implementar os patheners neste curso? vc já deve ter se deparado com problemas assim, fico no aguardo de um suporte para resolver o problema,  desde já obrigado por sua atenção e consultoria Carlos. 

Daniel Luis Camargo
Manager Carlos Ferreira 29/01/2025

Então deixa o default como '', getAll(string $filter = '')

 

E ao chamar, faz assim: service->getAll($request->filter ?? '')

Carlos Ferreira
Criador Daniel Luis Camargo 29/01/2025
<?php


namespace App\Services;

use stdClass;

class FornecedorService
{

protected $repository;

public function __construct()
{

}


public function getAll(string $filter = ''): array
{

return $this->repository->getAll($filter);

}
Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreUpdateFornecedor;
use App\Models\Fornecedor;
use App\Services\FornecedorService;
use Illuminate\Http\Request;

class FornecedorController extends Controller
{

public function __construct(
protected FornecedorService $service

){}

public function index(Request $request)
{
// dd($request)->all();
$fornecedores = $this->service->getAll($request->filter ?? '');

return view('admin/fornecedores/index', compact('fornecedores'));

}
Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

olá boa tarde Carlos, obrigado pelo retorno....realizado as alterações sugeridas mas o problema infelizmente continua...

http://localhost:8989/fornecedores

Error: Call to a member function getAll() on null

App\Services\FornecedorService: 22

getAll 

App\Http\Controllers\Admin\FornecedorController: 22

index

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

aqui 

public function getAll(string $filter = ''): array
{
// dd($filter);
return $this->repository->getAll($filter);
}// aqui return $this->repository>getAll($filter); onde esta a $repository? tem declarado protected $repositor;
 

Infelizmente não estou conseguindo avançar com as alterações sugeridas, fico no aguardo do suporte e de uma possivel solução, desde

já obrigado

 

Daniel Luis Camargo
Criador Daniel Luis Camargo 29/01/2025

no banco de dados tem registros de fornecedores o crud que foi implementado a index teria que listar estes registros! 

Daniel Luis Camargo
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!