Larvel针对Auth :: user()-> id进行验证;

时间:2019-01-09 18:08:59

标签: php validation laravel-5

我正在努力避免管理员的悖论删除其自己的管理员角色并收到此错误

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');
                }
            }
        ]
    ]);

    ... 
    }

1 个答案:

答案 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');
            }
        }
    ]
]);

这应该有效。