Laravel 5.6 Existing Controller not found

Asked

Viewed 68 times

1

I have a ProdutoController inside App\Http\Controllers, but when I try to access the screen that makes use, gives error saying that the controller was not found.

ReflectionException (-1) Class App\Http\Controllers\ProdutoController does not exist


<?php

namespace App\Http\Controllers;

use App\Http\Requests\NovoProdutoRequest;
use App\Produto;
use App\ProdutoPreco;
use App\ProdutoTipo;
use Illuminate\Http\Request;

class ProdutoController extends Controller
{
    public function index()
    {
        $produtos = Produto::withTrashed()->get();

        return view("admin.produto.index", [ "produtos" => $produtos ]);
    }

    public function create()
    {
        $tiposProdutos = ProdutoTipo::all();

        return view("admin.produto.novo", [ "tiposProdutos" => $tiposProdutos ]);
    }

    public function store(NovoProdutoRequest $request)
    {
        try {
            $produtoTipo = ProdutoTipo::findOrFail($request["tipo_produto"]);

            $produto = new Produto();
            $produto->nome = $request["nome"];
            $produto->descricao = $request["descricao"];
            $produto->produtoTipo()->associate($produtoTipo);

            $produto->save();

            $produtoPreco = new ProdutoPreco();
            $produtoPreco->preco = $request["valor"];
            $produtoPreco->produto()->associate($produto);

            $produtoPreco->save();

            $this->montarRespostaToastr("Produto criado com sucesso.", "success");
            return redirect()->action("ProdutoController@index");
        }
        catch (\Exception $ex) {
            $this->montarRespostaToastr("Houve um erro ao tentar adicionar o produto.", "danger");
            return redirect()->action("ProdutoController@index");
        }
    }

    public function edit($id)
    {
        try {
            $produto = Produto::withTrashed()->where("id", $id)->first();

            if ($produto == null)
                throw new \Exception();

            $tiposProdutos = ProdutoTipo::all();

            return view("admin.produto.editar", [ "produto" => $produto, "tiposProdutos" => $tiposProdutos ]);
       }
       catch (\Exception $ex) {
            $this->montarRespostaToastr("Houve um erro ao buscar o produto.", "danger");
            return redirect()->action("ProdutoController@index");
       }
    }

    public function update(NovoProdutoRequest $request, $id)
    {
        try {
            $produto = Produto::withTrashed()->where("id", $id)->first();

            if ($produto == null)
                throw new \Exception();

            $produtoTipo = ProdutoTipo::findOrFail($request["tipo_produto"]);

            $produto->nome = $request["nome"];
            $produto->descricao = $request["descricao"];
            $produto->produtoTipo()->associate($produtoTipo);

            $produtoPreco = ProdutoPreco::where([ "produto_id" => $id, "deleted_at" => null ])->first();

            if ($produtoPreco == null)
                throw new \Exception();

            // Se precisar, atualiza o ProdutoPreco
            if ($produtoPreco->preco != ProdutoPreco::formatarPrecoParaDB($request["valor"])) {
                $produtoPreco->delete();

                $novoProdutoPreco = new ProdutoPreco();
                $novoProdutoPreco->preco = $request["valor"];
                $novoProdutoPreco->produto()->associate($produto);

                $novoProdutoPreco->save();
            }

            $produto->save();

            $this->montarRespostaToastr("Produto editado com sucesso.", "success");
            return redirect()->action("ProdutoController@index");
        }
        catch (\Exception $ex) {
            $this->montarRespostaToastr("Houve um problema ao editar o produto.", "danger");
            return redirect()->action("ProdutoController@index");
        }
    }

    public function toggleDeletado($id)
    {
        try {
            $produto = Produto::withTrashed()->where("id", $id)->first();

            if ($produto == null)
                throw new \Exception();


            if ($produto->trashed())
                $produto->restore();
            else
                $produto->delete();

            $this->montarRespostaToastr($produto->trashed() ? 'Produto desativado com sucesso.' : 'Produto ativado com sucesso.', 'success');
            return redirect()->action('ProdutoController@index');
        }
        catch (\Exception $ex) {
            $this->montarRespostaToastr('Houve um erro ao tentar ativar/desativar o produto.', 'danger');

            return redirect()->action('ProdutoController@index');
        }
    }
}

Their routes:

Auth::routes();

// Admin
Route::middleware(['admin'])->prefix('admin')->group(function () {
    Route::get('/home', 'HomeController@index')->name('home');

    // PRODUTO
    Route::get("/produtos", "ProdutoController@index")->name("produtos");
    Route::get("/produto/novo", "ProdutoController@create")->name("produto-novo");
    Route::post("/produto/novo", "ProdutoController@store")->name("produto-novo");
    Route::get('/toggle-deletado/{id}', 'ProdutoController@toggleDeletado')->name('toggle-deletado');
    Route::get("/produto/editar/{id}", "ProdutoController@edit")->name("produto.editar");
    Route::post("/produto/editar/{id}", "ProdutoController@update")->name("produto.editar");
});

You have to register this controller somewhere else?

  • 3

    The file name is ProdutoController.php?

  • Yes, Productocontroller.php

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.