Laravel字符串验证以允许空字符串

时间:2019-02-22 15:33:35

标签: php laravel validation

在Laravel 5.7中,我正在使用表单请求验证:

public function rules() 
{
    return [
        'age' => 'integer',
        'title' => 'string|max:50'
    ];
}

如果我使用此有效负载向我的API提交请求:

{
  "age": 24,
  "title": ""
}

Laravel返回错误:

{
    "message": "The given data was invalid.",
    "errors": {
        "title": [
            "The title must be a string."
        ]
    }
}

我希望它能够通过验证,因为标题是一个字符串,尽管是空的。验证应如何制定以允许使用空字符串?

5 个答案:

答案 0 :(得分:4)

您需要nullable来允许一个空字符串

public function rules() 
{
    return [
        'age' => 'integer',
        'title' => 'nullable|string|max:50'
    ];
}

答案 1 :(得分:1)

尝试查看ConvertEmptyStringsToNull中间件是否处于活动状态,那么它将解释此行为,请参见docs

答案 2 :(得分:0)

也许添加一个min约束会成功吗?

public function rules() 
{
    return [
        'age' => 'integer',
        'title' => 'string|min:0|max:50'
    ];
}

答案 3 :(得分:0)

我会尝试

public function rules() 
{
    return [
        'age' => 'integer',
        'title' => 'string|sometimes'
    ];
}

这只会在标题存在时验证标题。

答案 4 :(得分:0)

存在 present 规则,检查存在密钥但让它为空。

<块引用>

#present

现在 验证字段必须存在于输入数据中,但可以为空。

https://laravel.com/docs/5.7/validation#rule-present