Laravel — действие не определено

#php #laravel #mongodb

#php #laravel #mongodb

Вопрос:

Я создаю CRUD-приложение в Laravel 7 и MongoDB. Добавление элементов в коллекцию работает нормально. Но я хотел удалить элемент, и, к сожалению, Laravel перестал мне нравиться… Я получаю сообщение об ошибке:

 Action AppHttpControllersInQuestController@destroy not defined.
  

Я проверил дюжину раз и написал такую функцию

 <?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppQuests;
use DB;
use IlluminateFoundationAuthAuthenticatesUsers;

class InQuestsController extends Controller
{
    ...

    public function destroy($id) {
        $quest = Quests::find($id);
        $quest->delete();

        return redirect('inside');
    }
}
  

Для функции я ссылаюсь на:

 <form action="{{ action('InQuestsController@destroy', $quest->id) }}" method="POST">
      @csrf
      <input name="_method" type="hidden" value="DELETE">
      <button id="details" class="idButton detailsButton" type="button"><img src="{{ asset('images/arrow.png') }}" alt="" class="icon arrow"></button>
      <button class="editButton" type="button"><img src="{{ asset('images/pencil.svg') }}" alt=""></button>
      <button class="deleteButton" type="submit"> <img src="{{ asset('images/bin.png') }}" alt=""></button>
</form>
  

Что не так?

Комментарии:

1. InQuestsController != InQuestController исправьте это здесь Action AppHttpControllersInQuestController@destroy not defined.

2. Исправлено, но ошибка все та же

3. та же ошибка .? Action AppHttpControllersInQuestController@destroy not defined ?

4. @KamleshPaul Да, это то же самое. Но «Задание» теперь является «Квестами» в описании ошибки -> Action App Http Controllers InQuestsController @destroy не определено.

5. затем используйте URL вместо прямого действия контроллера

Ответ №1:

ИСПРАВИТЬ:

В web.php добавить строку:

 Route::delete('{id}', 'InQuestsController@destroy')->name('destroy');