我正在努力避免管理员的悖论删除其自己的管理员角色并收到此错误
Undefined variable: request
Undefined variable: thisUser
该变量是在验证函数之外定义的
下面是整个验证代码,是否可以通过内置验证来做到这一点?
public function edit(Request $request)
{
$thisUser = Auth::user();
$validatedData = $request->validate([
'id' => 'required',
'name' => 'required|alpha_num',
'email' => 'required|E-Mail',
'is_admin' => [
'required',
'boolean',
function($attribute, $value, $fail) {
if($thisUser->id == $request->input('id')) {
return $fail('Can not remove admin privilege of yourself');
}
}
]
]);
...
}
答案 0 :(得分:3)
闭包将无法访问在其作用域之外定义的变量。
$validatedData = $request->validate([
'id' => 'required',
'name' => 'required|alpha_num',
'email' => 'required|E-Mail',
'is_admin' => [
'required',
'boolean',
function($attribute, $value, $fail) use($thisUser, $request) {
if($thisUser->id == $request->input('id')) {
return $fail('Can not remove admin privilege of yourself');
}
}
]
]);
这应该有效。