Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao puxar os dados do postman(/especialidades)

Bom dia, eu estou tendo um problema ao chamar /especialidades, estou seguindo o professor passo a passo, mas eu não sei o que estou fazendo de errado :(

O erro:

The controller for URI "/especialidades" is not callable. Expected method "buscarTodas" on class "App\Controller\EspecialidadesController", did you mean "buscarTodos"?

Minha rota:

especialidades:
   path: /especialidades
   controller: App\Controller\EspecialidadesController::buscarTodos
   methods:
     - GET

medicos:
  path: /medicos
  controller: App\Controller\MedicosController::buscarTodos
  methods:
    - GET

Minha EspecialidadeController.php:

<?php

namespace App\Controller;

use App\Entity\Especialidade;
use App\Repository\EspecialidadeRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class EspecialidadesController extends BaseController
{
    /**
     * @var EntityManagerInterface
     */
    private $entityManager;
    /**
     * @var EspecialidadeRepository
     */
    private $repository;

    public function __construct(
        EntityManagerInterface $entityManager,
        EspecialidadeRepository $repository
    ) {
        parent::__construct($repository);
        $this->entityManager = $entityManager;
        $this->repository = $repository;
    }

    /**
     * @Route("/especialidades", methods={"POST"})
     */
    public function nova(Request $request): Response
    {
        $dadosRequest = $request->getContent();
        $dadosEmJson = json_decode($dadosRequest);

        $especialidade = new Especialidade();
        $especialidade->setDescricao($dadosEmJson->descricao);

        $this->entityManager->persist($especialidade);
        $this->entityManager->flush();

        return new JsonResponse($especialidade);
    }

    /**
     * @Route("/especialidades/{id}", methods={"GET"})
     */
    public function buscarUma(int $id): Response
    {
        return new JsonResponse($this->repository->find($id));
    }

    /**
     * @Route("/especialidades/{id}", methods={"PUT"})
     */
    public function atualiza(int $id, Request $request): Response
    {
        $dadosRequest = $request->getContent();
        $dadosEmJson = json_decode($dadosRequest);

        $especialidade = $this->repository->find($id);
        $especialidade
            ->setDescricao($dadosEmJson->descricao);

        $this->entityManager->flush();

        return new JsonResponse($especialidade);
    }

    /**
     * @Route("/especialidades/{id}", methods={"DELETE"})
     */
    public function remove(int $id): Response
    {
        $especialidade = $this->repository->find($id);
        $this->entityManager->remove($especialidade);
        $this->entityManager->flush();

        return new Response('', Response::HTTP_NO_CONTENT);
    }
}

Minha BaseController.php:

<?php

namespace App\Controller;

use Doctrine\Common\Persistence\ObjectRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;

abstract class BaseController extends AbstractController
{
    /**
     * @var ObjectRepository
     */
    private $repository;

    public function __construct(ObjectRepository $repository)
    {

        $this->repository = $repository;
    }

    public function buscarTodos(): Response
    {
        $entityList = $this->repository->findAll();
        return new JsonResponse($entityList);
    }
}
1 resposta
solução!

Pessoal eu consegui resolver meu erro :)

O método que eu apaguei estava salvo no cache, quem tiver o mesmo erro tenta reiniciar o apache e depois volta a rodar o servidor php -S localhost:8080 -t public.

Quem tiver o mesmo erro espero ter ajudado