【问题标题】:Delete not working and redirecting to the same page - Laravel删除不起作用并重定向到同一页面 - Laravel
【发布时间】:2020-09-03 19:09:07
【问题描述】:

我是 laravel 的新手,遇到了一个问题。我在 Controller 中做了一个删除功能,并在路由中正确添加了它。然后我将它连接到视图中的一个按钮。当我按下按钮时,它会将我重定向到同一页面而不删除任何内容。

这是我的功能:

 public function delete_user($id){
        $data = User::where('id' , $id);
        $data->delete();
        return route('home');
    }

这是我的路线:

Route::get('/delete/user/{id}' , 'UserController@delete_user');

我将它添加到这样的视图中:

 <a href="{{action('UserController@delete_user' , $user->id)}}"><button class="btn btn-info btn-fill pull-right">Delete Profile</button></a>
                           

重定向后有一个 ?像abcd.com/delete/1?这样的url

当我将鼠标悬停在按钮上时,它会显示正确的路线(图像左下角),但当我按下它时什么也没有发生:

任何帮助将不胜感激。谢谢

编辑:相同的功能在另一个视图实例中工作得很好。

【问题讨论】:

    标签: javascript php laravel laravel-5


    【解决方案1】:

    您需要修改控制器内部的删除功能,如下所示...

    public function delete_user($id){
            $data = User::find($id);
            $data->delete();
            return redirect('/home'); //write name of view where you want to go.
        }
    

    【讨论】:

    • User::where('id' , $id) 不会做太多,缺少-&gt;first()。或者干脆使用User::find($id)
    • 谢谢@kerbh0lz
    • 它不起作用,它只是用 ? 重定向到同一个链接信息即abcd.com/delete/1? 来自abcd.com/delete/1
    【解决方案2】:

    试试这个:

    public function delete_user($id){
        $data = User::where('id' , $id)->first();
        // or
        // $data = User::find($id);
    
        $data->delete();
    
        return route('home');
    }
    

    当您使用where 子句检索单个资源时,您必须调用first()get() 来获取集合。

    尝试这样做:

    控制器方法

    public function delete_user($id){
    
        $user = User::findOrFail($id);
    
        $user->delete();
    
        return route('home');
    }
    
    

    路线

    Route::delete('/delete/user/{id}' , 'UserController@delete_user')->name('delete-user');
    

    查看

    <a class="btn btn-info btn-fill pull-right" href="{{ route('delete-user') }}"
        onclick="event.preventDefault();
             document.getElementById('delete-user').submit();">
        {{ __('Delete user') }}
    </a>
    
    <form id="delete-user" action="{{ route('delete-user') }}" method="POST" style="display: none;">
       @csrf
    </form>
    

    我还认为 &lt;a href="{{action('UserController@delete_user' , $user-&gt;id)}}"&gt;&lt;button class="btn btn-info btn-fill pull-right"&gt;Delete Profile&lt;/button&gt;&lt;/a&gt; 应该是有问题的,因为您在链接中有一个按钮......它错了。如果您想使用按钮,我刚刚向您展示的方法会更好。但实际上你的链接应该是这样的:

     <a href="{{ url("/delete/user/{$user->id}")}}">Delete Profile</a>
    

    【讨论】:

    • 它只是用 ? 重定向到同一个链接信息即abcd.com/delete/1? 来自abcd.com/delete/1
    【解决方案3】:

    经过一些实验,我似乎犯了一个相当粗心的错误。我作为表单提交类型删除。我只是在表单外按下按钮,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 2016-12-14
      • 2018-02-03
      • 2020-06-12
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多