@can ('destroy', $user) 和{{ route ('users.destroy', $user->id) }}中的 $user 问题

<li>
    <img src="{{ $user->gravatar() }}" alt="{{ $user->name }}" class="gravatar"/>
    <a href="{{ route('users.show', $user->id )}}" class="username">{{ $user->name }}</a>

    @can('destroy', $user)
      <form action="{{ route('users.destroy', $user->id) }}" method="post">
        {{ csrf_field() }}
        {{ method_field('DELETE') }}
        <button type="submit" class="btn btn-sm btn-danger delete-btn">删除</button>
      </form>
    @endcan
</li>

@can 命令里的$user代表当前用户对象,{{}}中的$user代表传递给视图的数据,两者并不一样,是这样理解吗?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10

两者一样,都代表当前的用户

5年前 评论

@wenslim
@foreach ($users as $user)...@endforeach 中,$user不就是一个个的用户吗?
和 @can('destroy', $user)...@endcan 中的$user,这两个是同一个的话,理解不通啊

5年前 评论

你这两个 $user 应该都是在 foreach 中的吧?

5年前 评论

@tongtongtongtong 既然都在同一个 foreach 中,那么这俩就是同一个东西噻....

5年前 评论

file

file
指的是同一个用户,但不是表示当前用户,而是用户列表中遍历出来的每个用户

5年前 评论

can 与 {{}} 中的 $user 是一样的. 都是遍历出的每个用户对象.

can('destroy', $user) 这个里面不用传入当前用户, 与制定安全策略不用传入当前用户对象 ($currentUser) 是一样的道理.

5年前 评论

@heart
@foreach ($users as $user)...@endforeach 中,$user不就是一个个的用户吗?
和 @can('destroy', $user)...@endcan 中的$user,这两个是同一个的话,理解不通啊

这两个$user就是一个同啊 不是同一个才有问题呢
@can('destroy', $user)...@endcan
编译后大概意思不就是
if($currentUser->is_admin && $currentUser->id !== $user->id){
查询到的每条数据都判断下 如果是普通用户才会有删除按钮
}

5年前 评论

都是指要删除的用户,,,策略里面的当前用户会自动加载出来

4年前 评论

这里的$user是从上一层foreach中$users结果集里面遍历出来的单独用户,和当前登录用户没有关系

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!