【问题标题】:laravel 5 not deleting user recordlaravel 5 不删除用户记录
【发布时间】:2015-09-01 12:53:41
【问题描述】:

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

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

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

所以这应该意味着我的 UserController 中的销毁操作应该是我的代码的位置。

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

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

【问题讨论】:

  • 嗨 Matthew,您能添加您的 HTLM 表单吗?
  • @ThomasSnijder 我现在添加了 html

标签: laravel laravel-5


【解决方案1】:

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

我的解决方法是首先将用户指向控制器中的显示功能。并为用户提供用户自身信息的概览。

此页面包含一个带有 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() !!}

【讨论】:

    【解决方案2】:

    在资源控制器中,销毁操作由 DELETE 方法处理。不是 GET 方法。当前,您正在使用未注册的 GET 方法访问路由。以下命令将帮助您了解您注册的资源路由。

    php artisan route:list
    

    获取

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

    DELETE(您可以使用表单和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

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2016-02-14
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多