You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 如何基于登录用户ID仅禁用自身对应的删除按钮

问题原因

你现有代码的判断逻辑存在错误:@if (auth()->user()->id)的作用是判断当前是否有登录用户(只要登录成功该值就存在,判断结果永远为真),所以所有用户行的删除按钮都会被禁用,不符合你的需求。

解决方案

将index.blade中删除按钮的判断条件修改为判断当前循环的用户ID是否等于登录用户的ID即可,修正后的代码如下:

<form action="{{route('users.destroy',$user->id)}}" method="post" enctype="multipart/form-data">
    @csrf
    @method('DELETE')
    {{-- 仅当循环到的用户是当前登录用户时禁用删除按钮 --}}
    @if (auth()->user()->id == $user->id)
        <button class="btn btn-outline-danger btn-xs" disabled><i class="fe fe-trash"></i>{{ __('Hapus') }}</button>
    @else
        <button class="btn btn-outline-danger btn-xs"><i class="fe fe-trash"></i>{{ __('Hapus') }}</button>
    @endif
</form>

补充优化建议

如果需要兼顾管理员权限逻辑,比如允许超级管理员删除任意账号(包括自己),可以额外扩展判断条件,示例如下:

@if (auth()->user()->id == $user->id && auth()->user()->role != 'super_admin')

内容的提问来源于stack exchange,提问作者N. Arifin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:45:04