Laravel 为什么将路由设置为posts.destroy的链接在实践中会破坏到posts.show的路由 @extends('layouts.app')) @节(“内容”) @foreach($posts作为$post)     @endforeach @端部
我是新来的拉雷维尔和在学习的过程中。在上面的代码中,我在数据库中创建了一个简单的无序帖子列表。每个帖子旁边都有一个编辑和删除链接。编辑链接工作正常,并在posts控制器中调用编辑方法。但是删除链接不起作用。我认为它在posts controller中运行show方法而不是destroy方法。为什么会这样 更清楚地说,我已经在某种程度上解决了foreach指令中下面代码的问题Laravel 为什么将路由设置为posts.destroy的链接在实践中会破坏到posts.show的路由 @extends('layouts.app')) @节(“内容”) @foreach($posts作为$post) &emsp; &emsp; @endforeach @端部,laravel,laravel-blade,Laravel,Laravel Blade,我是新来的拉雷维尔和在学习的过程中。在上面的代码中,我在数据库中创建了一个简单的无序帖子列表。每个帖子旁边都有一个编辑和删除链接。编辑链接工作正常,并在posts控制器中调用编辑方法。但是删除链接不起作用。我认为它在posts controller中运行show方法而不是destroy方法。为什么会这样 更清楚地说,我已经在某种程度上解决了foreach指令中下面代码的问题 @extends('layouts.app') @section('content') <ul>
@extends('layouts.app')
@section('content')
<ul>
@foreach ($posts as $post)
<li>
<a href="{{route('posts.show', $post->id)}}">
{{$post->title}}
</a>
 
<a href="{{route('posts.edit', $post->id)}}">
Edit
</a>
 
<a href="{{route('posts.destroy', $post->id)}}">
Delete
</a>
@endforeach
</ul>
@endsection
@csrf
但首先为什么要这样做。我理解当我们使用表单时,因为html表单不支持DELETE方法,所以我不得不添加隐藏的输入。但是为什么超链接标签不起作用呢。以下是路线列表:
默认情况下,链接始终执行GET方法
您可以使用一些javascript模拟删除方法的行为。您可以共享您的路由吗?@DanielPetrovaliev我已经更新了我的问题并包含了路由列表。这是因为超链接发送的是
Get
请求,而不是DELETE
请求。因此,当您在posts/{post}
上发送get请求时,它将触发posts.show
。
<form action="/posts/{{$post->id}}" method="post">
@csrf
<input type="hidden" name="_method" value=" DELETE">
<input type="submit" name="delete" value="Delete" id="">
</form>