Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Apagar com GET ou DELETE?

Olá, senhores do conselho Jedi.

Lembro de outros cursos do Alura que os instrutores orientam a nunca usar o método GET para remoção. Pois além de outras desvantagens os robôs do Google poderiam seguir aquele link e nos causar diversos problemas.

É possível utilizar outro método (verbo) do http como o DELETE?

Grande abraço!

6 respostas

É possível utilizar o POST também, criando um formulário com um input oculto e com apenas um botão de envio, segue exemplo:

            <form action="remove-produto.php" method="post"> <!-- Formulário de remoção de produto-->
                              <input type="hidden" name="id" value="<?=$produto->id?>">
                              <button class="btn btn-danger">Remover</button>
                          </form>

sim é possível e recomendado você usar os verbos do protocolo http e para fazer isso no laravel você tem que usar

<form method="POST">
    {!! method_field('delete') !!}
</form>

Posso usar o controlador direto no action?

solução!

Para executar a exclusão via POST no Laravel você pode fazer o seguinte:

//Definir a rota de exclusão com o método Post
Route::post('/produtos/remove' , 'ProdutoController@remove');

//Criar o Formulário
<form action="{{url('/produtos/remove')}}" method="post">
                            <input type="hidden" name="id" value="{{$p->id}}">
                            <input type="hidden" name="_token" value="{{ csrf_token() }}">
                            <button type="submit" class="btn btn-danger">
                                <span class="glyphicon glyphicon-trash"></span>
                              </button>
                        </form>

//Utilizar a função remove normalmente
    public function remove() {
            $id = Request::input('id');
            $produto = Produto::find($id);
            $produto->delete();
            Request::session()->flash('status', 'O Produto '.$produto->nome.' foi removido com sucesso!');
            return redirect()->action('ProdutoController@lista');
        }

Valeu galera!

Para usar o delete é a mesma coisa que o Felipe fez so que ao invés de Route::post vai ser Route::delete