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
相关产品推荐
相关产品推荐

