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?
The file name is
ProdutoController.php
?– novic
Yes, Productocontroller.php
– JDalri