Удалить мою базу данных, используя маршруты в Laravel?

Я использую Laravel и пытаюсь создать функцию удаления, которая позаботится об удалении выбранной задачи, выполненной пользователем.

Мне было интересно, как я могу добиться этого с помощью маршрутов?

<a href="{{ route("tasks.edit", ["id" => $task->id]) }}"><button class="btn btn-outline-light">Edit</button></a>
<a href="{{ route("tasks.destroy", ["id" => $task->id]) }}"><button class="btn btn-outline-light">Delete</button></a>

В этот момент мой маршрут удаления выводит меня на ту же страницу, что и маршрут редактирования.

Моя функция удаления:

    public function destroy(Task $task)
{
$task->delete();
return redirect('/tasks')->with('success', 'Task removed');
}

Я получил рабочую функцию удаления с помощью форм Laravel:

{!! Form::open(['action' => ['TasksController@destroy', $task->id], 'method' => 'POST', 'class'=> 'float-right']) !!}
{{Form::hidden('_method','DELETE')}}
{{Form::submit('Delete', ['class' => 'btn btn-outline-danger'])}}
{!! Form::close() !!}

Стоит ли рассматривать другой метод заботы о моем удалении или мне следует придерживаться форм Laravel?

0

Решение

Это из-за защиты CSRF. Вы можете подумать, используя запрос ajax.
Вы можете найти пример в этом посте.
Как удалить запись в laravel 5.3 с помощью ajax-запроса?

0

Другие решения

Когда вы нажимаете ссылку удаления, вы в основном делаете запрос GET к маршруту tasks.destroy, а это не то, что вам нужно. Вы можете либо создать форму и отправить ее по щелчку мыши (bart-выход laravel делает что-то подобное)

<a href="#"onclick="event.preventDefault(); document.getElementById('task-destroy-form').submit();">
Delete task
</a>
<form id="task-destroy-form" action="{{ route("tasks.destroy", ["id" => $task->id]) }}" method="POST" style="display: none;">
{{ csrf_field() }}
<input type="hidden" name="_method" value="DELETE">
</form>

или сделайте ajax-вызов, который отправит параметры id и CSRF на маршрут.

0

По вопросам рекламы [email protected]