Laravel 应用的删除表单

Deletion Form For Laravel App

我不确定为什么在 Laravel 应用程序中单击删除按钮时收到 NotFoundHTTPException。

index.blade.php

<form action="/users/3" method="POST">
    <input type="hidden" value="DELETE" name="_method">
    <button class="btn btn-sm btn-icon btn-pure btn-default on-defaul" data-original-title="Delete" data-toggle="tooltip" type="submit">
</form>

UsersController.php

<?php

namespace App\Http\Controllers;

use App\User;
use Gate;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class UsersController extends Controller
{
    public function destroy()
    {
        return 'yes';
    }
}

routes.php

Route::get('users', ['as' => 'users', 'uses' => 'UsersController@index']);
Route::get('users/{user}', ['as' => 'users.show', 'uses' => 'UsersController@show']);
Route::get('users/{user}/edit', ['as' => 'users.edit', 'uses' => 'UsersController@edit']);
Route::delete('users/{user}', ['as' => 'users.delete', 'uses' => 'UsersController@destroy']);

更改格式:

<form action="/users/3" method="DELETE">
    <button class="btn btn-sm btn-icon btn-pure btn-default on-defaul" data-original-title="Delete" data-toggle="tooltip" type="submit">
</form>

您正在使用 POST 并且您还没有为 "DELETE" 动词定义路由。定义 post 而不是删除路由 (Route::post(...)) 或更改表单以使用如上所述的删除方法。

你应该改变:

<form action="/users/3" method="POST">

以下内容:

<form action="<?= route('users.delete', [$user]) ?>" method="POST">

index.blade.php

<form action="{{url('/users/3')}}" method="DELETE">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <button class="btn btn-sm btn-icon btn-pure btn-default on-defaul" data-original-title="Delete" data-toggle="tooltip" type="submit">
</form>

UsersController.php

<?php

namespace App\Http\Controllers;

use App\User;
use Gate;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class UsersController extends Controller
{
    public function destroy($id)
    {
        return 'yes';
    }
}