11
respostas

Illuminate\Contracts\Container\BindingResolutionException Target class [SeriesController] does not exist.

web.php

<?php

use Illuminate\Support\Facades\Route;

Route::get('/series', 'SeriesController@listarSeries');

SeriesController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SeriesController. extends Controller
{

    public function listarSeries() {
        $series = [
            'Grey\'s Anatomy',
            'Lost',
            'Agents of SHIELD'
        ];

        $html = "<ul>";
        foreach ($series as $serie){
            $html .="<li>$serie</li>";
        }
        $html .= "</ul>";

        return $html;
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O que devo fazer?

11 respostas

Olá, Guilherme. Provavelmente você está usando uma versão diferente do Laravel, né!?

Se sim, a definição da rota agora é diferente.

use App\Http\Controllers\SeriesController;

// ...

Route::get('/series', [SeriesController::class, 'listarSeries']);

O erro se manteve, não sei o que fazer para tratar este erro.

Compartilha seu código completo do web.php pra eu dar uma olhada? Qual versão do Laravel você está usando?

Guilherme, acabei de ver que depois do nome da classe SeriesController no código que você compartilhou tem um "."

Eu ate havia visto este ponto e removi ele ontem a noite mesmo.

web

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SeriesController;



Route::get('series',[SeriesController::class, 'listarSeries']);

SeriesController.php

<?php

namespace App\Http\Controllers;


class SeriesController extends Controller
{
    public function listarSeries() {
        $series = [
            'Grey\'s Anatomy',
            'Lost',
            'Agents of SHIELD'
        ];

        $html = "<ul>";
        foreach ($series as $serie) {
            $html .= "<li>$serie</li>";
        }
        $html .= "</ul>";

        return $html;
    }
}

Passei pelo mesmo problema, aliás recomendo alterar o material da aula sobre o assunto. É uma mudança na versão do Laravel.

No arquivo web.php

Antes funcionava assim Route::get('/series', 'SeriesController@listarSeries');

Hoje precisa ficar assim Route::get('/series', 'App\Http\Controllers\SeriesController@listarSeries');

Fonte: https://www.scratchcode.io/laravel-8-target-class-controller-does-not-exist/

Alterei mas não mudou nada

Estou usando a versão Laravel Framework 8.56.0

Guilherme, compartilha seu código inteiro, por favor? Pelo GitHub talvez... Deve ter algum outro erro, porque os trechos que você compartilhou estão certinhos. A mensagem de erro é exatamente a mesma?

Eu estou com a Laravel v8.57.0 (PHP v7.4.21).

Ah! lembrei de uma coisa! O antivírus, no meu caso o avast, estava bloqueando o server.php falei para ignorar! Veja se não é o seu caso.

Se não for isso, tenta criar outro projeto do zero e vai passando por cada passo. Pode ser alguma coisa que vc fez ou desfez, eu mesmo tentei várias vezes.

Consegui, não foi antivirus no meu caso.

Route::get('series',[SeriesController::class, 'listarSeries']);

funcionou com essa sintaxe agora

unica coisa que fiz de diferente foi isso

php artisan route:clear

Aahh, provavelmente seu ambiente não tá como dev ou local, aí ele tá fazendo cache. rsrs Bom, que bom que resolveu.

Vou adicionar um "Para saber mais" falando dessa diferença no router.