php - Laravel:验证请求中的空数组

标签 php laravel

在我的 Laravel 应用程序中,我试图验证我的请求正文,但一种特定情况会引发 ValidationException。

我的代码如下所示:

public function updateData(Request $request){
    try {
        $validatedData = $request->validate([
            'ids' => ['required', 'array'],
            'ids.*' => 'integer'

        ]);
    catch (ValidationException $th) {
        return response()->json($this->createFailedResult($th->errors()));
    }
}

我传递的数据如下所示:

没有异常(exception):
{
    ids: [1]
}

有异常(exception):
{
    ids: []
}

这就是Ecception:

[ids] => Array ( [0] => The ids field is required. ) )



我读过关于用“present”交换“required”,但我不希望验证忽略空字符串。

谢谢你的帮助!

最佳答案

I've read about exchanging "required" with "present", but i dont want empty strings to be ignored by the validation.


present验证规则需要该字段的存在。

带有 present|array 的有效请求包含以下内容之一:
{
    "ids": []
}
{
    "ids": [1, 2, 3]
}

如果验证规则是 required|array ,只有后者有效。

通过使用 'ids.*' => 'integer' 扩展您的验证规则,您确保提供的输入(如果有)被验证为整数。因此,以下内容无效,即使 ids字段是 present :
{
    "ids": ["", "ipsum"]
}

关于php - Laravel:验证请求中的空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61997989/

相关文章:

php - 如何使用 Laravel 管理数据库表中的 'order' 列?

php - 如何以水平对齐方式显示垂直列表

php - 如何以编程方式向 Silverstripe 添加新页面?

php - 生成带有当年前缀的序列号 例如 : 2016-000001- PHP/MYSQL

PHPExcel如何为行组设置折叠和展开?

php - 拉维尔;如何使 setLocale 永久化?

Laravel:带有点击功能的单元测试

php - 自定义错误页面不适用于 Apache 和 nginx 设置的 .htaccess

php - 通过 php 和 html 表单上传文件的代码错误

php - 尝试在 Laravel Blade 上显示值时出现 undefined variable X 问题