为什么实际上将路由设置为posts.destroy的链接设置为posts.show

时间:2020-04-16 14:09:36

标签: laravel laravel-blade

@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

我是laravel的新手,正在学习中。在上面的代码中,我在数据库中创建了一个简单的无序帖子列表。每个帖子旁边是一个编辑和删除链接。编辑链接可以正常工作,并在posts控制器中调用edit方法。但是删除链接无效。我认为它运行show方法而不是posts控制器中的destroy方法。为什么会这样呢?

更清楚地说,我已经某种程度上解决了foreach指令内的波纹管问题

<form action="/posts/{{$post->id}}" method="post">
    @csrf
    <input type="hidden" name="_method" value=" DELETE">
    <input type="submit" name="delete" value="Delete" id="">
</form>

但是为什么要首先这样做。我了解我们使用表单的原因,因为html表单不支持DELETE方法,因此我不得不添加隐藏的输入。但是,为什么超链接标记不起作用。这是路线列表: enter image description here

1 个答案:

答案 0 :(得分:0)

默认情况下,链接始终执行GET方法。

您可以使用一些JavaScript模仿DELETE方法的行为。