如何修复删除按钮在Laravel 5.7中不起作用?

时间:2019-03-05 13:47:43

标签: php laravel

我正在尝试在Laravel中创建一个删除按钮,但它会将我重定向到白页。 这是删除按钮的html代码(它是一个图标):

<a class="icon" href="{{ route('capteurs.destroy', $capteur->id)}}" data-balloon="Supprimer" data-balloon-pos="right">
    <i class="fe fe-trash-2" ></i>
</a>
控制器类中的

destroy函数:

public function destroy($id)
{
  $capteur = Capteur::find($id);
  $capteur->delete();
  return redirect('/capteurs')->with('success', 'Capteur Supprimé');
}

我应该重定向到此页面的/capteurs上: enter image description here

相反,我在这里被重定向了,我想删除的元素仍然在那里:

enter image description here

编辑:俘虏路线

Route::resource('capteurs', 'CapteurController');

3 个答案:

答案 0 :(得分:3)

我认为您应该为此做一个表格:

<form method="POST" action="{{ route('capteurs.destroy', $capteur->id)}}"
  @csrf
  @method('DELETE')
  <a class="icon" data-balloon="Supprimer" data-balloon-pos="right">
  </a>
  <button type="submit"><i class="fe fe-trash-2" ></i></button>
</form>

答案 1 :(得分:1)

您需要在锚标记周围添加form,接下来需要做的是DELETE请求而不是GET。您可以尝试以下代码:

<form action="{{ route('capteurs.destroy', $capteur->id) }}" method="POST">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button type='submit' class="btn btn-danger" ><i class="fe fe-trash-2" ></i></button>
</form>

如果您真的希望它与锚标记一起使用,则给锚标记指定一个特定的id并执行ajax请求!

答案 2 :(得分:0)

您当前正在链接到销毁页面,就像它的GET请求一样,而它应该是POST请求。如果执行php artisan route:list,它将显示路线信息。

要解决此问题:

<form action="{{ URL::route('capteurs.destroy', $capteur->id) }}" method="POST">
    <input type="hidden" name="_method" value="DELETE">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <button><i class="fe fe-trash-2" ></i></button>
</form>

您可能需要编辑一些样式