laravel 5不删除用户记录

时间:2015-06-16 15:34:46

标签: laravel laravel-5

我想做的只是从数据库中删除用户。

我的路线是一种资源,如下所示:

Route::resource('users', 'UserController');

所以这应该意味着我的UserController中的destroy动作应该是我代码的地方。

所以我的控制器动作如下:

public function destroy($id)
{
    $user = User::find($id);
    $user->delete();
    return Redirect::back();
}

现在当我点击删除按钮时,它会链接到/ users / destroy / 4

它应该找到id为4的用户然后将其删除。

相反,我得到了错误

NotFoundHttpException in RouteCollection.php line 145:

修改

@foreach ($users as $user)
   <tr>
     <td>{{ $user->id }}</td>
     <td>{{ $user->username }}</td>
     <td>{{$user->HWID}}</td>
     <td>{{$user->name}}</td>
     <td class="tools">
       <a href="users/{{$user->id}}/edit" class="user-edit"><i class="fa fa-pencil-square-o fa-lg"></i></a>
       <a href="users/destroy/{{$user->id}}" class="user-delete"><i class="fa fa-trash fa-lg"></i></a>
     </td>
   </tr>
@endforeach

2 个答案:

答案 0 :(得分:1)

我不知道是否可以通过您在表格中指定的链接直接从数据库中删除用户。

我的工作是首先将用户指向控制器中的show函数。并向用户提供用户自身信息的概述。

此页面包含带有DELETE方法的表单。在用户信息下面我放了一个删除按钮,它将使用DELETE方法将表单提交到URL:/ users / 4

导致链接:/ users / destroy / 4不是有效的资源链接。

有关资源控制器链接的更多信息,请参阅此链接:Resource Controller

我自己的应用程序的删除/显示页面示例:

{!! Form::model($ManagementUser, array('method' => 'DELETE', 'url' => 'admin/management/' . $ManagementUser->id, 'role' => 'form')) !!}
    <div class="box-body">
        <div class="form-group">
            <label>Name</label>
            {!! Form::text('name', Input::old('name'), array('class' => 'form-control', 'placeholder' => 'Name', 'name' => 'name', 'disabled')) !!}
        </div>
        <div class="form-group">
            <label>E-mailaddress</label>
            {!! Form::text('email', Input::old('email'), array('class' => 'form-control', 'placeholder' => 'E-Mail', 'name' => 'email', 'disabled')) !!}
        </div>
        {!! Form::submit('Delete', array('class' => 'btn btn-block btn-default')) !!}
    </div>
{!! Form::close() !!}

答案 1 :(得分:0)

在Resource Controller中,destroy操作由DELETE方法处理。不是GET方法。目前,您正在使用未注册的GET方法访问路由。以下命令将帮助您了解您注册的资源路由。

php artisan route:list

GET

<a href="users/destroy/{{$user->id}}" class="user-delete"><i class="fa fa-trash fa-lg"></i></a>

DELETE(您可以使用form和DELETE方法删除记录,如下所示)

<form action="{{ route('users.destroy', $user->id) }}" method="POST">
    <input type="hidden" name="_method" value="DELETE" />
    <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" />
    <button><i class="fa fa-trash fa-lg"></i></button>
</form>

参考

Resource Controller

Method Spoofing