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'
]);
我正在使用 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'
]);