【问题标题】:Laravel controller validation Request does not existLaravel 控制器验证请求不存在
【发布时间】:2021-12-26 10:59:00
【问题描述】:

我正在使用 Laravel 8 验证,我正在尝试使用一些输入验证表单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: request”。

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

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

【问题讨论】:

    标签: function validation request unique laravel-8


    【解决方案1】:

    发生错误是因为在您的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'
    ]);
    

    【讨论】:

    • 非常感谢@brombeer,终于$request 被识别了。验证仍然无法正常工作,但这是另一个问题。
    • 我的错误,错误的数据输入。你的回答就像一个魅力,谢谢@brombeer
    猜你喜欢
    • 2019-02-25
    • 2016-10-24
    • 2019-12-29
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2017-11-21
    相关资源
    最近更新 更多