Estou tentando passar a rota conforme explicado no vídeo:
<form action="{{ route('serie.destroy', $serie -> id) }}" method="post">
@csrf
<button class="button.btn.btn-danger.btn-sm"> X </button>
</form>
Para que possa fazer a exclusão da serie. Mas por algum motivo ele dá o erro em tela de que a variável não foi encontrada (imagem no fim do post).
Minha rota ta definida dessa forma:
Route::post('/colecao/destroy/{colecao}', [\App\Models\Collection::class, 'destroy'])->name('colecao.destroy');
E sigo sem saber o porque. Estou apenas usando nomes de variáveis diferentes. Abaixo a minha index.blade.php
<x-layout title="Sua coleção">
<a href="{{ route('colecao.create') }}" class="btn btn-dark mb-3">Adicionar</a>
<ul class="list-group">
@foreach($quadrinhos as $quadrinho)
<li class="list-group-item d-flex justify-content-between align-items-center">
{{$quadrinho->name_collection}}
<form action="{{ route('colecao.destroy', $colecao -> id) }}" method="post">
@csrf
<button class="button.btn.btn-danger.btn-sm"> X </button>
</form>
</li>
@endforeach
</ul>
</x-layout>
Esse é o meu arquivo de rotas:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return redirect('/login');
});
Route::controller(\App\Http\Controllers\userController::class)->group(function () {
Route::get('/cadastro','index')->name('cadastro.index');
Route::post('/cadastro/salvar','store')->name('cadastro.store');
});
Route::controller(\App\Http\Controllers\colecaoController::class)->group(function () {
Route::get('/colecao', 'index')->name('colecao.index');
Route::get('/colecao/criar','create')->name('colecao.create');
Route::post('/colecao/salvar','store')->name('colecao.store');
});
Route::post('/colecao/destroy/{colecao}', [\App\Models\Collection::class, 'destroy'])->name('colecao.destroy');
Route::controller(\App\Http\Controllers\loginController::class)->group(function () {
Route::get('/login','index') ->name('login.index');
});
Tentei inserir a linha da Route::post('/colecao/destroy/{colecao}', [\App\Models\Collection::class, 'destroy'])->name('colecao.destroy');
dentro da Route::controller mas o erro é o mesmo, não encontra a variável $colecao
na tela.
Meu controller:
<?php
namespace App\Http\Controllers;
use App\Models\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class colecaoController extends Controller
{
public function index(Request $request)
{
//$quadrinhos = Collection::all();
$quadrinhos = Collection::query()->orderBy('name_collection')->get();
return view('colecao.index')->with('quadrinhos', $quadrinhos);
}
public function create()
{
return view('colecao.create');
}
public function store(Request $request)
{
$nameCollection = $request->nome;
$collection = new Collection();
$collection->name_collection = $nameCollection;
$collection->save();
return to_route('colecao.index');
}
public function destroy(Request $request)
{
Collection::destroy($request->colecao);
return to_route('colecao.index');
}
}