@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代表传递给视图的数据,两者并不一样,是这样理解吗?
关于 LearnKu
两者一样,都代表当前的用户
@wenslim
在 @foreach ($users as $user)...@endforeach 中,$user不就是一个个的用户吗?
和 @can('destroy', $user)...@endcan 中的$user,这两个是同一个的话,理解不通啊
你这两个
$user应该都是在foreach中的吧?@青风百里
是的,都在foreach中。
@tongtongtongtong 既然都在同一个 foreach 中,那么这俩就是同一个东西噻....
指的是同一个用户,但不是表示当前用户,而是用户列表中遍历出来的每个用户
can 与 {{}} 中的 $user 是一样的. 都是遍历出的每个用户对象.
can('destroy', $user) 这个里面不用传入当前用户, 与制定安全策略不用传入当前用户对象 ($currentUser) 是一样的道理.
@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){
查询到的每条数据都判断下 如果是普通用户才会有删除按钮
}
都是指要删除的用户,,,策略里面的当前用户会自动加载出来
这里的$user是从上一层foreach中$users结果集里面遍历出来的单独用户,和当前登录用户没有关系