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

Problemas com a rota na view

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');
    }
}

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

1 resposta
solução!

Já achei o que fiz de errado. Eu declarei no foreach as variáveis $quadrinhos as $quadrinho e é essa variável que tenho que usar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software