Ошибка из-за того, что метод http не поддерживается в моем маршруте - PullRequest
0 голосов
/ 11 января 2020

Я довольно новичок в программировании, и это мой первый вопрос в stackoverflow, поэтому я прошу прощения, если мое форматирование неверно. Я пытаюсь создать свой первый веб-сайт и хочу обновить базу данных элемента, пометив его как «заимствованный». Но я получаю эту ошибку при использовании моей кнопки привязки:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: PUT.

index.blade:

@foreach ($histories as $history)
                        <tr>
                            <td>{{ $history->user->username }}</td>
                            <td>{{ $history->user->name }}</td>
                            <td>{{ $history->game->title }}</td>

                            <td>
                                @csrf
                                @method("PUT")
                                <a href='{{ url("/pending/$history->id/returned") }}' class="btn-group btn-block">Tag as Returned</a>
                            </td>

маршрут:

Route::put('/pending/{id}/returned', 'PendingController@isReturned');

контроллер:

public function isReturned($id)
    {
        $history = History::find($id);

        $history->is_returned = 1;
        $history->save();

        return redirect('pending/adminindex');
    }

Я пытался превратить кнопку в форму с помощью кнопки, но с той же ошибкой.

<td>
    <form action='{{ url("/pending/$history->id/returned") }}' method="post" enctype="multipart/form-data" class="btn-group btn-block">
      @csrf
      @method("PUT")
      <button type="submit" class="btn-sm btn-info">Tag as Returned</button>
    </form>
</td>

1 Ответ

0 голосов
/ 11 января 2020

Единственная проблема состояла в том, что $history->id было отправлено в виде простого текста, как есть.

Решение 1 : лучше добавить name в маршрут, например, pending.return.

Route::put('/pending/{id}/returned', 'PendingController@isReturned')->name('pending.return');

А свою форму вы можете использовать теперь route name вместо url.

<form action='{{ route("pending.return", $history->id) }}' method="post" enctype="multipart/form-data" class="btn-group btn-block">


Или Решение 2 вы можете придерживаться url просто измените его на:
<form action='{{ url("/pending/". $history->id ."/returned") }}' method="post" enctype="multipart/form-data" class="btn-group btn-block">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...