Laravel 控制器验证请求不存在

Laravel controller validation Request does not exist

我正在使用 Laravel 8 验证,我想做的是用一些输入 name 来验证表单,这是 [=34= 独有的] ] 调整“名称”列的大小,它还取决于另一列 speciesId,即来自 $request->speciesId.

的值

Controller中的函数是这样的

    public function storeSize(Request $request)
    {
        $validated = $request->validate(
            [
                'name' => [
                    'required', Rule::unique('sizes')->where(function ($query) {
                        return $query->where('speciesId', $request->speciesId);
                    })
                ],
                'speciesId' => 'required'
            ]
        );
    }

已经添加 use Illuminate\Http\Request;use Illuminate\Validation\Rule; 但仍然出现“ErrorException Undefined variable:请求”。

当我尝试 var_dump($request) 或 echo $request->speciesID 时,变量和值存在。

我的问题是,为什么验证函数无法识别 Request 变量?

发生错误是因为在您的 function 中调用 $request 不可用。您需要通过将 use $request 添加到 function ($query):

来使其可用
$validated = $request->validate([
  'name' => [
    'required', Rule::unique('sizes')->where(function ($query) use ($request) {
       return $query->where('speciesId', $request->speciesId);
     })
  ],
  'speciesId' => 'required'
]);