2
respostas

[Dúvida] Request não envia os dados referentes

Estou com o seguinte problema: ao enviar o comando para apagar o item das Series, o método destroy não recebe os dados de referencia ao id para apagar. Já tentei todas opções dos posts anteriores e não deu certo.

A meu ver é ao algo relacionado ao method=post, mas não consigo encontrar esse erro.

SeriesController

<?php

namespace App\Http\Controllers;

use App\Models\Serie;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class SeriesController extends Controller
{
    public function index()
    {
        $series = Serie::query()->orderBy('nome')->get();

        return view('series.index')->with('series', $series);
    }

    public function create()
    {
        return view('series.create');
    }

    public function store(Request $request)
    {
       Serie::create($request->all());

        return to_route('series.index');
    }
    public function destroy(Request $request)
    {
        dd($request->all());
        Serie::destroy($request->series);
        return to_route('series.index');
    }
}

Route

Route::get('/', function () {
    return redirect('/series');
});

Route::resource('/series', SeriesController::class)->only(['index','create','store']);

Route::delete('/series/destroy/{id}', [SeriesController::class, 'destroy'])->name('series.destroy');

index:

 <ul class="list-group">
        @foreach ($series as $serie)
        <li class="list-group-item d-flex justify-content-between align-items-center">
        {{ $serie->nome }}
        
            <form action="{{ route('series.destroy', $serie->id)}}" method="post">
                @csrf
                @method("DELETE")
                <button class='btn btn-danger btn-sm'>
                    X
                </button>
            </form>
        </li>
        @endforeach

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

2 respostas

Resolvido. Unifiquei as rotas acrescentando o destroy ao resource. Mas de qualquer forma não consigo ver as informações ao usar a função dump and die , gostaria de saber o motivo.

E aí, Ionaldo, tudo certo?

Mano, dei uma olhada no seu código e saca só, no método destroy do SeriesController, tu tá usando o dd($request->all()) pra tentar ver as paradas, mas cê falou que não tá vendo nada. Bora analisar o código e ver o que pode tá dando ruim.

  1. Código do Método Destroy:

    public function destroy(Request $request)
    {
        dd($request->all());
        Serie::destroy($request->series);
        return to_route('series.index');
    }
    

    Essa parte dd($request->all()) devia mostrar todas as info da requisição. Se não tá aparecendo o que cê quer, pode ter algo zoado nos dados que tão sendo mandados pelo form lá na tua view. Dá um confere se o form tá sendo montado certinho.

  2. Código da View (Form):

    <form action="{{ route('series.destroy', $serie->id)}}" method="post">
        @csrf
        @method("DELETE")
        <button class='btn btn-danger btn-sm'>
            X
        </button>
    </form>
    

    Vê se a variável $serie->id tem o valor certo e se o form tá usando o método HTTP certo (DELETE). E cê já tá usando o @csrf, então tá de boa.

Rota de Exclusão:

Route::delete('/series/destroy/{id}', [SeriesController::class, 'destroy'])->name('series.destroy');

Vê se a rota de delete tá na configuração certa. Nesse caso, cê tá esperando um parâmetro {id} na URL, mas no método destroy cê tá tentando acessar $request->series. Dá uma conferida pra ver se os nomes tão batendo.

O método destroy tem que receber o parâmetro {id} direto:

public function destroy($id)
{
    dd($id);
    Serie::destroy($id);
    return to_route('series.index');
}

Com essas mudanças, o dd($id) deve mostrar o ID certo que tá sendo passado na requisição de delete.

Lembra de ajustar a chamada do método destroy na tua view pra garantir que o ID tá sendo passado direitinho:

<form action="{{ route('series.destroy', $serie->id)}}" method="post">
    @csrf
    @method("DELETE")
    <button class='btn btn-danger btn-sm'>
        X
    </button>
</form>

Essas são as primeiras paradas que tu pode checar pra corrigir o problema de não conseguir ver as info usando o dd. Se mesmo com esses ajustes a coisa continuar estranha ou se pintar mais dúvida, tamo junto pra resolver.

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