首页 > 解决方案 > Laravel FormRequest:客户端发送带有点的属性

问题描述

客户端发送如下内容:

foo.1.bar=hello

在我的 FormRequest 类中,我尝试过:

public function rules()
    {
        return [
            'foo.1.bar' => 'string|nullable' // does not work

            'foo' => 'array|nullable' // does not work

            'foo' => [ // does not work
              '1' => [
                'bar' => 'string|nullable'
              ]
            ]

知道如何处理吗?

标签: laravellaravel-validation

解决方案


尝试手动获取参数的值,然后对其进行验证:

class YourRequest extends FormRequest
{
    public function rules(): array
    {
        return [...];
    }

    public function withValidator(Validator $validator): void
    {
        $value = $this->get('foo.1.bar') ?: $this->get('foo_1_bar');

        $validator->after(function (Validator $validator) use ($value) {
            if ($value == null) {
                $validator->errors()->add('foo.1.bar', 'Error Message.');
                $validator->errors()->add('foo_1_bar', 'Error Message.');
            }
        });
    }
}

推荐阅读