5
respostas

Mensagem de produto deletado

Estou implementando a mesma lógica da mensagem depois de adicionar no método excluir, porém o parâmetro 'id' não é encontrado na requisição anterior.

ProdutoController

public function remove($id) {

        $produto = Produto::find($id);
        $produto->delete();
        return redirect('/produtos')->withInput();

    }

listagem.blade.php

@if(old('id'))
<div class="alert alert-success ajustar">
    <strong>Sucesso!</strong> O produto de {{old('id')}} excluido!.
</div>
@endif
5 respostas

Oi Eugênio, tudo bem? Me diz uma coisa, o produto é deletado no final das contas? Me mostra o link de deleção por favor?

Sim, o procedimento de deletar esta funcionando. Só que ao redirecionar para a listagem novamente não tem o request.

fragmento do ProdutoController

public function remove($id) {

        $produto = Produto::find($id);
        $produto->delete();

        return redirect('/produtos')->withInput();
    }

fragmento da pagina listagem.blade.php

@foreach ($produtos as $p)
        <tr class="{{$p->quantidade <=1 ? 'alert-danger' : ''}}">
            <td>{{$p->nome}}</td>
            <td>R$ {{$p->valor}}</td>
            <td>{{$p->descricao}}<span class="{{$p->quantidade <=1 ? 'glyphicon glyphicon-thumbs-down pull-right' : ' '}}"></span></td>
            <td class="center">{{$p->quantidade}}</td>
            <td class="center">
                <a href="/produtos/detalhes/{{$p->id}}" >
                    <span class="glyphicon glyphicon-search"></span>
                </a>
            </td>
            <td class="center">
                <a href="/produtos/altera/{{$p->id}}">
                    <span class="glyphicon glyphicon-edit"></span>
                </a>
            </td>
            <td class="center">
                <a id="id" href="/produtos/remove/{{$p->id}}">
                    <span class="glyphicon glyphicon-trash"></span>
                </a>
            </td>
        </tr>
        @endforeach

Eugênio, tenta fazer assim pra ver se funciona por favor.

return redirect('/produtos')->flash('id', $id);

Eu até tenho uma explicação, mas queria confirmar primeiro a suspeita. Testa pra mim?

Ola Eugênio, a função withInput() costuma ser usada apenas para retornar campos de entrada de formulários e como o parâmetro $id não foi passado por uma formulário, o withInput() não retorna ele para a view e consequentemente a função old() não encontra. mas você pode fazer algo assim:

    public function remove($id) {
        $produto = Produto::find($id);
        $produto->delete();
        return redirect('/produtos', compact('id'));
    }

mas recomendo que você não use requisição GET para remover, e bem mais seguro fazer com de uma requisição POST a alem disso você vai poder user o seu código

Era exatamente nisso que eu estava pensando Ismael, mas não tinha 100% de certeza. Eugênio, testa nossas alternativas por favor?