Laravel 为什么将路由设置为posts.destroy的链接在实践中会破坏到posts.show的路由 @extends('layouts.app')) @节(“内容”) @foreach($posts作为$post)     @endforeach @端部

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>

我是新来的拉雷维尔和在学习的过程中。在上面的代码中,我在数据库中创建了一个简单的无序帖子列表。每个帖子旁边都有一个编辑和删除链接。编辑链接工作正常,并在posts控制器中调用编辑方法。但是删除链接不起作用。我认为它在posts controller中运行show方法而不是destroy方法。为什么会这样

更清楚地说,我已经在某种程度上解决了foreach指令中下面代码的问题

@extends('layouts.app')

@section('content')

    <ul>
        @foreach ($posts as $post)
            <li>
            <a href="{{route('posts.show', $post->id)}}">
                {{$post->title}}
            </a>
            &emsp;
            <a href="{{route('posts.edit', $post->id)}}">
                Edit
            </a>
            &emsp;
            <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>