Отсутствуют обязательные параметры для [Route: admin.destroy] в действии формы Laravel - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть эта ошибка:

Отсутствуют обязательные параметры для [Route: admin.destroy] [URI: admin / {admin}]

Это всеview и все переменные, я много пробовал, но я не знаю, что не так, если я изменяю, вставьте второй параметр $ info, эта ошибка появляется. Метод DELETE не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, POST.

    <div class="table-responsive">
        <table class=" table ">
            <thead class="thead-dark">
                <tr>
                    <th scope="col">#</th>
                    <th scope="col">Name</th>
                    <th scope="col">Code</th>

                    <th scope="col">Phone</th>
                    <th scope="col">Phone 2</th>
                    <th scope="col">Delete</th>
                    {{-- <th scope="col">email</th> --}}
                </tr>
            </thead>
            <tbody>
                @foreach ($infos as $info)
                <tr>
                    <td>{{ $info->id }}</td>
                    <td>{{ $info->name}}</td>
                    <td>{{ $info->code }}</td>
                    <td>{{ $info->phone }}</td>
                    <td>{{ $info->phone2 }}</td>
                    <td>
                        <button class="btn btn-danger btn-sm" onclick="handleDelete ({{ $info->id }})">Delete
                        </button>
                    </td>
                    {{-- <td>{{ $info->email }}</td> --}}
                </tr>

                @endforeach
            </tbody>
        </table>
    </div>

    <form action="{{ route('admin.destroy',['admin' => $info])}}" method="post" id="deleteInfoForm">
        @method('DELETE')
        @csrf
        <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModal"
            aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="deleteModal">Delete Info</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <p class=" text-center text-bold">Are your sure ?</p>

                    </div>
                    <div class="modal-footer ">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">No , Go back</button>
                        <button type="submit" class="btn btn-danger">Yes , Delete</button>
                    </div>
                </div>
            </div>
        </div>
    </form>

это моя функция удаления из AdminController

public function destroy(Info $admin)
    {
        // $info = Info::find($id);

        $admin->delete();

        // session()->flash('succuss', 'Info deleted successfully');
        return redirect('/admin');
    }

мой список маршрутизации

| DELETE    | admin/{admin}          | admin.destroy    | App\Http\Controllers\AdminController@destroy  

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Маршрут ожидает, что параметр 2 будет моделью идентификатора, используемого для привязки модели маршрута

Добавьте его к действию в виде

<form action="{{ route('admin.destroy', ['admin' => $info]) }}"

Обновление

Форма находится вне цикла foreach и поэтому $info не определена

Вместо этого передайте форму внутри foreach

<div class="table-responsive">
    <table class=" table ">
        <thead class="thead-dark">
            <tr>
                <th scope="col">#</th>
                <th scope="col">Name</th>
                <th scope="col">Code</th>

                <th scope="col">Phone</th>
                <th scope="col">Phone 2</th>
                <th scope="col">Delete</th>
                {{-- <th scope="col">email</th> --}}
            </tr>
        </thead>
        <tbody>
            @foreach ($infos as $info)
            <tr>
                <td>{{ $info->id }}</td>
                <td>{{ $info->name}}</td>
                <td>{{ $info->code }}</td>
                <td>{{ $info->phone }}</td>
                <td>{{ $info->phone2 }}</td>
                <td>
                    <button class="btn btn-danger btn-sm" onclick="handleDelete ({{ $info->id }})">Delete
                    </button>
                </td>
                {{-- <td>{{ $info->email }}</td> --}}
            </tr>
            <tr>
                <form action="{{ route('admin.destroy',['admin' => $info])}}" method="post" id="deleteInfoForm">
                    @method('DELETE')
                    @csrf
                    <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModal"
                        aria-hidden="true">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h5 class="modal-title" id="deleteModal">Delete Info</h5>
                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                        <span aria-hidden="true">&times;</span>
                                    </button>
                                </div>
                                <div class="modal-body">
                                    <p class=" text-center text-bold">Are your sure ?</p>

                                </div>
                                <div class="modal-footer ">
                                    <button type="button" class="btn btn-secondary" data-dismiss="modal">No , Go
                                        back</button>
                                    <button type="submit" class="btn btn-danger">Yes , Delete</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </form>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>

Надеюсь, это поможет

0 голосов
/ 01 ноября 2019

Вы получаете эту ошибку, потому что ваш маршрут ожидает получить переменную администратора (admin/{admin}), но ее нет, когда вы вызываете route в {{ route('admin.destroy')}}. Вы должны предоставить его как второй параметр метода route в формате массива ключей.

0 голосов
/ 01 ноября 2019

Вам не хватает данных, которые вы хотите удалить в открытии формы:

<form action="{{ route('admin.destroy', ['admin'=>$admin])}}" method="post" id="deleteInfoForm">

Прежде чем сделать это, вы должны передать переменную $ admin в это представление, чтобы использовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...