代码之家  ›  专栏  ›  技术社区  ›  GluePear

如果存在数组,则需要Laravel validate array元素

  •  0
  • GluePear  · 技术社区  · 6 年前

    拉威尔5.7。我有一个模型的表单请求验证 Foo bar ,必须是数组。如果存在,它必须包含两个键, bing bang . 但是如果数组不存在,显然这两个键不应该被验证。

    return [
        'bar'      => 'bail|array|size:2',
        'bar.bing' => 'required|numeric',
        'bar.bang' => 'required|numeric',
    ];
    

    当我用 酒吧 存在数组。但是当我在没有 数组,我仍然得到验证错误

    这个巴邦字段是必需的

    我怎样才能使他们只在需要的时候 酒吧 是否存在?

    2 回复  |  直到 4 年前
        1
  •  4
  •   GluePear    6 年前

    return [
        'bar'      => 'nullable|bail|array|size:2',
        'bar.bing' => 'required_with:bar|numeric',
        'bar.bang' => 'required_with:bar|numeric',
    ]
    

    Docs for required_with

        2
  •  0
  •   Sebastian Sulinski    6 年前

    在这种情况下我倾向于这样做

    public function rules(): array
    {
        $rules = [
            // ...
        ];
    
        if ($this->bar) {
            $rules['bar'] = 'array|size:2';
            $rules['bar.bing'] = 'required|numeric';
            $rules['bar.bang'] = 'required|numeric';
        }
    
        return $rules;
    }