【问题标题】:Laravel Validate Against Auth::user()->id;Laravel 验证 Auth::user()->id;
【发布时间】:2019-01-09 18:08:58
【问题描述】:

我试图避免管理员的悖论删除自己的管理员角色并得到这个错误

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

    ... 
    }

【问题讨论】:

  • 您要在哪里执行此操作?另外,你是否在命名空间中包含了 Auth 和 Request 门面?
  • 这是一个控制器类,是的,一切都包括在内,所有变量都在验证函数之外工作。

标签: php validation laravel-5


【解决方案1】:

闭包将无法访问在其范围之外定义的变量。

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

这应该可行。

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 2017-06-21
    • 1970-01-01
    • 2021-01-02
    • 2021-05-10
    • 2015-05-13
    • 2013-12-15
    • 2021-11-04
    • 2020-09-05
    相关资源
    最近更新 更多