Почему ссылка с маршрутом, установленным на posts.destroy, на практике переходит к posts.show - PullRequest
0 голосов
/ 16 апреля 2020
@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 и в процессе обучения. В приведенном выше коде я сделал простой неупорядоченный список сообщений, который находится в базе данных. Рядом с каждым постом есть редактирование и удаление ссылок. Ссылка редактирования работает просто отлично и вызывает метод редактирования в контроллере сообщений. Но ссылка для удаления не работает. Я думаю, что он запускает метод show вместо метода destroy в контроллере posts. Почему это так?

Чтобы быть более понятным, я уже несколько решил проблему с кодом, приведенным ниже внутри директивы 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 голосов
/ 16 апреля 2020

Ссылки всегда выполняют метод GET по умолчанию.

Вы можете имитировать поведение метода c DELETE, используя некоторые javascript.

...